冒泡排序是一种简单的排序,通过循环两两比较,每次找出一个最大值,从而使数列有序
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类是java.util包提供的工具类,它提供了许多操作数组的方法
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],其在内存中表示如下图所示:
已知有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]));
}