冒泡排序之简单易懂总结

251 阅读1分钟

摘要

  • 冒泡排序通过交换的思想利用多趟依次比较相邻的两个数的大小,按顺序交换位置,从而使得每一趟遍历比较后最后一个元素都是这次比较后得到的最大的。
  • 遍历次数:需要进行比较的趟数,长度为n的数组,需要比较的次数是n-1,
  • 比较次数: 第i次遍历所需要的比较次数是n-i-1

遍历次数的理解

n个数字,第一次比较之后,最后一个是最大的,然后第二次比较之后n-1个数是最大的,一次类推,第n-1比较后第2个数字是最大的,这时候已经有序,不需要再比较

比较次数的理解

第i次比较,已经有i-1个数字有序,只需要比较n-i+1数字,两两比较,只需要比较n-i次

代码

public void bubbleSort(int [] arr){
    
    for(int i=0;i<arr.length()-1;i++ ){//遍历的次数
        boolean sortState = false;
        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;
                sortState = true;
            }
        }
        if(!sortState){//优化
            break;
        }    
    }
}