冒泡排序

冒泡排序

通过对待排序序列从前到后(从下标较小的元素开始),依次比较相邻的元素的值,若发现逆序则交换,使值较大的元素逐渐从前移动向后部,就像水底的气泡一样逐渐上冒。

因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行交换过,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换,从而减少不必要的比较。

冒泡排序思路图解

代码实现

public class BubbleSortProMax {

    public static void main(String[] args) {
        int arr[] = {3, 9, -1, 10, -2};

        bubbleSort(arr);

        for (int i : arr) {
            System.out.println(i);
        }
    }

    public static void bubbleSort(int[] arr){
        boolean flag=false;
        for (int j = 0; j < arr.length; j++) {
            //第一趟排序
            for (int i = 0; i < arr.length - 1 - j; i++) {
                // 前面的数据》后面的数据,则交换
                if (arr[i] > arr[i + 1]) {
                    flag=true;
                    int temp = arr[i + 1];
                    arr[i + 1] = arr[i];
                    arr[i] = temp;
                }
            }

            if(!flag){ //在一趟排序中,一次交换都没有发生
                break;
            }else{
                flag=false; // 重置flag,进行下一次判断
            }
        }
    }
}

时间复杂度为n的平方

posted @ 2023-06-03 00:25  King-DA  阅读(42)  评论(0)    收藏  举报