冒泡排序,是两两比较,就像吐泡泡一样的
假设是升序排列的话,就是第一遍循环,把最大的放在最后面
第二遍循环的话,就是把第二大的数放到后面
牵扯到两个for语句实现的循环
- 循环的次数,就是数组的长度减一,arr.length
这个是因为每次都会冒出来一个最大值,然后最后剩下的两个数,一比较,就可以了,省去了一次比较,然后循环的次数就是数组的长度减一
- 比较的次数,应该是数组的长度减去当前的循环次数
因为已经比较过的那些就不要再次进行比较了,就需要减去掉循环次数
public class BubbleSort{
public static void main(String[] args){
int[] arr = {2, 4, 11, 0, -4, 333, 90};
printArr(arr);
aaaSort(arr);
printArr(arr);
}
public static void aaaSort(int[] arr){
//循环的次数,arr.length-1
//int temp = 0;
for (int i = 1; i<arr.length;i++){
//比较的次数:arr.length-当前循环次数
for(int j = 0;j < arr.length-i;j++){
if (arr[j]>arr[j+1]){
// swap(arr, j, j+1);
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
// public static void swap(int[] arr,int j,int i){
// int temp = arr[j];
// arr[j] = arr[i];
// arr[i] = temp;
// }
//这里是写了一个输出数组的方法
public static void printArr(int[] arr){
for(int i = 0; i<arr.length;i++){
if(i==0){
System.out.print("["+arr[i]+",");
}else if(i == arr.length - 1){
System.out.print(arr[i]+"]");
}else {
System.out.print(arr[i]+",");
}
}
System.out.println("");
}
}