原理
从小到大的场景
- 相邻两个元素比较,如果前面大于后面,则交换
- 第一圈之后,最大的在后面
- 第二圈开始,最后一位可以不参与比较
代码
public static void bubbleSort(int[] arr){
for(int i = 0; i< arr.length -1; i++){
// -x 让每次比较的个数减一, -1,让角标越界不发生
for (int j = 0; j < arr.length - i - 1; j++) {
//相邻两个比较,大的放后面
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
public static void printArray(int[] arr){
System.out.print("[ ");
for (int i = 0 ;i < arr.length ;i++){
if(i < arr.length -1){
System.out.print(arr[i]+ ",");}
else {
System.out.print(arr[i]+" ]");
}
}
}
public static void main(String[] args){
int[] arr = {2,43,55,5,22,33,88,1,0};
System.out.println("Before sort : ");
printArray(arr);
bubbleSort(arr);
System.out.println("\nAfter sort : ");
printArray(arr);
}
测试
Before sort :
[ 2,43,55,5,22,33,88,1,0 ]
After sort :
[ 0,1,2,5,22,33,43,55,88 ]