废话不多说直接上代码,分析在代码注释处。
//冒泡排序就是两两比较,其中大的往后排
public class code_004_bubbleSort {
public static void printArr(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void swap(int[] arr,int i,int j){
int tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
public static void bubbleSort(int[] arr){
//1、先考虑特殊情况 零个元素和1个就不需要排序了
if(arr.length==0 || arr.length <2){
return;
}
//0到n-1范围内两两比较一下,大的放后面
//0到n-2范围内两两比较一下
//0到n-3范围内两两比较一下
//0到 N 范围内两两比较
int N = arr.length;
for (int i = 0; i <= N-1; i++) {
//中间的比较是 0和1 1和2 2和3 N和N-1位置进行比较
//从1位置开始比较
for(int start = 1;start<= N-1 ;start++){ //此处仍旧可以优化效率
if(arr[start-1]>arr[start]){
swap(arr,start-1,start);
}
}
}
}
public static void main(String[] args) {
int[] arr = {7,8,2,6,9,1,3,2,0};
printArr(arr);
bubbleSort(arr);
printArr(arr);
}
}