掌握冒泡排序算法
冒泡排序
如何实现数字升序排序?:每次比较相邻两数 小的交换到前面 每轮结束后最大的数交换到最后
用二重循环实现冒泡排序
1.用二重循环将5个数字升序排序 5个数字如何存放 数组,数组.length = 5
2.控制比较多少轮 外层循环,循环变量 i
3.控制每轮比较多少次 内层循环,循环变量 j
4.交换数据
int [] arr=new int[]{24,254,61,2,85,10,-1,3};
for (int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-1-j;i++){
if(arr[i]<arr[i+1]){
int temp=0;
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
}
使用Arrays类操作数组
Arrays类
方法名称 | 说明 |
boolean equals(array1,array2) | 比较array1和array2两个数组是否相等 |
sort(array) | 对数组array的元素进行升序排列 |
String toString(array) | 将一个数组array转换成一个字符串 |
void fill(array,val) | 把数组array所有元素都赋值为val |
copyOf(array,length) | 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致 |
int binarySearch(array, val) | 查询元素值val在数组array中的下标(要求数组中元素已经按升序排列) |
使用java.util.Arrays类 java.util包提供的工具类 Arrays类提供操作数组的方法,如:排序 Arrays类的sort()方法: 对数组进行升序排列
int [] arr=new int[]{1,2,34,4,6,7,9,45,761,36};
Arrays.sort(arr1);
练习2:Arrays类排列字符
需求说明 使用Arrays类升序排列一组字符,并查找某个特殊字符在升序后数组中的位置
int [] arr=new int[]{1,2,34,4,6,7,9,45,761,36};
String []arr1=new String[]{"1","2","3","a","b","t","c","34","刘","wang"};
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));
Arrays.sort(arr);
System.out.println("特殊字符升序后位置为"+Arrays.binarySearch(arr, 9));
System.out.println(Arrays.toString(arr));
理解二维数组的使用
多维数组
三维及以上的数组很少使用 主要使用二维数组 从语法上Java支持多维数组 从内存分配原理的角度讲,只有一维数组
二维数组
<数据类型> [ ][ ] 数组名; 或者 <数据类型> 数组名 [ ][ ];
int [ ][ ] scores; //定义二维数组 scores=new int[5][50]; //分配内存空间 //或者
int [ ][ ] scores = new int[5][50];
定义二维数组时,要定义最大维数
int [ ][ ] scores = new int[5][];
二维数组与内存2-1
二维数组定义
定义并赋值
写法一
int[][] scores=new int[][]{ { 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 }};
写法二
int scores[][] = {{ 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 } };
遍历二维数组
练习:有5个班各5名学生某门课程的成绩,如何计算5个班各自的总成绩
int [][]arr=new int[3][5];
Scanner input=new Scanner(System.in);
int []sums=new int[arr.length];
int []max=new int[arr.length];
for (int i=0;i<arr.length;i++){
int sum=0;
System.out.println("*****第"+(i+1)+"个班的成绩*****");
for (int j=0;j<arr[i].length;j++){
System.out.print("请输入第"+(j+1)+"个学生的成绩");
arr[i][j]=input.nextInt();
sum+=arr[i][j];
sums[i]=sum;
}
System.out.print("第"+(i+1)+"个班的总成绩:"+sum);
}