数组只能存错一种相同的数据类型,集合只能存储引用数据类型(用泛型),集合的底层就是一个可变的数组。
数组的冒泡排序:
public static void arrayMaxPaiXu(int[] arr) {
int temp; //定义的元素调换时的中间变量
int x = arr.length - 1; //定义的用来控制内层循环次数的变量,可以不定义,但是可以提高效率
for (int j = 0; j < arr.length - 1; j++) { //外层循环,控制循环次数,可以减一,可以不减
for (int i = 0; i < x; i++) { //内层循环,一定要数组的元素个数减一,因为比较到最后一个元素的时候,加一就会数组越界
if (arr[i] < arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1]; //元素调换位置
arr[i + 1] = temp;
}
}
x--; //控制内层次数,使外层循环每循环一次,内层循环就可减少最后一次比较,因为最后的元素已经固定
}
systemOut(arr);
}
//冒泡排序在数组中只有一两个元素是乱序的时候是效率最高的方法,但再元素全是随机的情况下就是最慢的排序方法了
集合的冒泡排序:
char temp; //换位置都需要定义中间变量,最好定义在循环之前,不用每循环一次就为其分配一次内存
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(j != list.size() - 1 && list.get(j) > list.get(j + 1)){ //如果循环条件没有减一,就在判断条件中判断元素是否为最后一个
temp = list.get(j);
list.set(j, list.get(j + 1)); //因为集合的长度是改变的,所以调用集合中的set(index, E e)为其赋值
list.set(j + 1, temp);
}
}
}