1.冒泡排序
将无序的数组元素排序成有序。
思考:如何将一个数组中的元素进行升序排列?
解析:将数组中的相邻元素两两比较,较大值放在后面,每轮比较完后将最大值排到最后
21 | 19 | 32 | 8 | 34 |
如上面这个数组长度为5的数组,分析发现,共需要比较4轮,第一轮比较4次,第二比较比3次,第三轮比较2次,第四轮比较1次。
方法:总结得出,可以使用双重for循环。代码段如下:
//对一个数组升序排序
int[] nums = {11,56,78,46,91,23,57,45};
//外循环控制轮数,元素下标是从0开始的,所以定义循环变量初始值为0
for(int i=0;i<nums.length-1;i++){
//内循环控制每轮比较的次数
for (int j = 0; j < nums.length-1-i; j++) {
//数组元素两两比较,小的放在前面,大的放在后面
if(nums[j]>nums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
//遍历升序后的数组
for (int i : nums) {
System.out.print(i+" ");
}
2.Arrays类
Arrays类是一种提供操作数组方法的类,如:排序,查询。使用需要导包,import.java.util.Arrays
2.1 使用Arrays类冒泡排序
升序排序方法: Arrays.sort(数组名);
没有返回值
案例:
2.2 Arrays类的其他操作数组的方法
Arrays.equals(数组名1,数组名2); | 比较两个数组是否相同,有返回值,是boolean型 如:boolean result=Arrays.equals(数组名1,数组名2); |
Arrays.toString(数组名); | 将数组转换成字符串,有返回值,是String型 如:String str=Arrays.toString(数组名); |
Arrays.fill(数组名,数据); | 将数组的所有元素替换为你写的数据,无返回值 |
Arrays.copyOf(数组名,复制长度); | 将数组进行指定长度的复制,有返回值,返回类型由数组的数据类型决定 |
Arrays.binarySearch(数组名,查找值); | 在指定的数组中查找你指定的数据,有返回值,如果有,返回这个值的下标,如果没有,返回一个负值,所以是int型 |
3.二维数组
二维数组:本质上是一个一维数组,其中的每个数组元素都是一个一维数组
3.1 二维数组的声明使用
常见写法1:
数据类型[ ] [ ] 数组名=new 数据类型[数组长度] [数组长度];
或者:数据类型[ ] [ ] 数组名=new 数据类型[数组长度] [ ];
如:int[ ][ ] nums=new int[3][4];
常见写法2:
数据类型[ ] [ ] 数组名=new 数据类型[ ] [ ]{{数据1,数据2,数据n},{数据1,数据2,数据m},{...}};
简写:数据类型[ ] [ ] 数组名={{数据1,数据2,数据n},{数据1,数据2,数据m},{...}};
如:int[ ][ ] nums={{1,2},{1,2,3},{10,20,30}};
3.2 操作二维数组元素
数组名[下标][下标]=数据;
3.3 遍历二维数组
遍历二维数组需要使用双重for循环,外循环变化的是二维数组中的每个元素的下标,内循环变化的是每个元素里的元素下标。
案例:对3个班的各6名同学某门成绩进行各种操作,如:求每个班的总成绩和平均分。
总结:对于冒泡排序要懂得其原理,平时使用Arrays.sort(数组名)就可以对数组元素排序。对于二维数组要明白其本质就是一个一维数组,二维数组中的每个元素都是一个一维数组。