Bootstrap

冒泡算法及其优化

冒泡排序的基本原理

冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻元素的大小,并交换它们直到整个序列有序。冒泡排序的基本思想是将较大的元素逐渐“浮”到数组的右端,而较小的元素逐渐“沉”到数组的左端。其基本原理如下:

  1. 从数组的第一个元素开始,比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素(升序排序),则交换它们的位置。
  3. 步骤1和步骤2,直到遍历整个数组。
  4. 上步骤,每次遍历都将最大的元素“冒泡”到数组的末尾。
  5. 复以上步骤,但不包括已排序的最大元素,直到整个数组排序完成。

代码:

private static void bubbleSort(int[] arr) {
        int length = arr.length;
        for (int i = length-1; i > 0; i--) {
            for(int j=0;j<i;j++){
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }

因为冒泡算法是相邻两个比较,如果某轮没有交换,则说明数据已经排序好了,直接返回即可

private static void bubbleSort(int[] arr) {
    int length = arr.length;
    boolean needSwap=false;
    for (int i = length-1; i > 0; i--) {
        for(int j=0;j<i;j++){
            if(arr[j]>arr[j+1]){
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
                needSwap=true;
            }
        }
        if(!needSwap){
            return ;
        }
    }
}
;