冒泡排序、Arrays类及二维数组

冒泡排序

冒泡排序是一种简单的排序,通过循环两两比较,每次找出一个最大值,从而使数列有序

int[] a = {8,3,5,4,1,7,9,6};
for (int i = 0; i < a.length-1 ; i++) {
	// 每次循环后,最后一项都为最大值,故为a.length-1-i
    for (int j = 0; j < a.length-1-i; j++) {
    	// 若前一项比后一项大,则交换值
        if(a[j]>a[j+1]){
            int temp = a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
    }
}
// 输出排序后的数组
System.out.println(Arrays.toString(a));

Arrays类

Arrays类是java.util包提供的工具类,它提供了许多操作数组的方法
冒泡排序、Arrays类及二维数组_第1张图片

int[] a = {2,1,3};
int[] b = {1,2,3};
// 输出false
System.out.println("数组a与数组b相等吗:"+ Arrays.equals(a,b));
// 对数字a排序
Arrays.sort(a);
//输出排序后的数组a
System.out.println("排序后的数组a:"+Arrays.toString(a));
// 将数组a全部填充6
Arrays.fill(a,6);
System.out.println("用6填充数组a:"+Arrays.toString(a));
// 将数组a的内容复制给数组c
int[] c =Arrays.copyOf(a,3);
System.out.println("数组c复制数组a的内容:"+Arrays.toString(c));
// 查询2在数组b中的下标
System.out.println("2在数组b中的下标为:"+ Arrays.binarySearch(b,2));

二维数组

二维数组的本质其实还是一维数组,它实际上是一个以一维数组做为元素的一维数组,其定义方式如下:
<数据类型> [ ][ ] 数组名; 或者 <数据类型> 数组名 [ ][ ];

int[][] a =new int[2][3];
// 当列数不确定时,可以省略,但是行数不可省略
int[][] b =new int[2][];

定义一个二维数组是s[3][5],其在内存中表示如下图所示:
冒泡排序、Arrays类及二维数组_第2张图片

二维数组的应用

已知有3个班,每个班5人,请利用二维数组计算各班总成绩和平均分

System.out.println("请输入5名学生成绩:");
double[] score = new double[5];
Scanner sc = new Scanner(System.in);
for (int i = 0; i <score.length ; i++) {
    System.out.print("请输入第"+(i+1)+"学生成绩:");
    score[i] = sc.nextDouble();
}
for (int i = 0; i <score.length-1; i++) {
    for (int j = 0; j <score.length-1-i ; j++) {
        if(score[j]<score[j+1]){
            double temp = score[j];
            score[j] = score[j+1];
            score[j+1] = temp;
        }
    }
}
System.out.println(Arrays.toString(score));

公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少种可能?

// 行数不确定,但公鸡不会超过50只,故行数可以定为50
int[][] a = new int[50][3];
// 用来记录真实行数
int b =0;
// 外层代表公鸡
for (int i = 1; i <=48; i++) {
	// 内层代表母鸡
    for (int j = 1; j <= 98; j++) {
    	// 小鸡为总数减去公鸡和母鸡数量
        int child = 100 - j - i;
        // 小鸡半文钱一只,小鸡数量要是2的整数倍
        if (child % 2 == 0 && 2 * i +  j + child / 2 == 100) {
        	// 将每种结果存放到二维数组
            a[b][0] = i;
            a[b][1] = j;
            a[b][2] = child;
            b++;
        }
    }
}
// 输出所有可能
for (int i = 0; i <b ; i++) {
    System.out.println(Arrays.toString(a[i]));
}

你可能感兴趣的:(冒泡排序、Arrays类及二维数组)