冒泡排序

本文主要介绍冒泡排序

int[] arr = {10,23,1,34,22};

图解冒泡排序过程

由此得出

总的排序趟数是数组元素个数-1(最后一个元素无需进行排序),每趟排序过程中进行比较次数是数组元素个数-当前趟数。

原因:第一趟排序,未确定顺序的元素个数是5,比较次数是5-1;第二趟排序,未确定顺序的元素个数是4,比较次数是4-1。依次类推,第 i 趟排序,比较次数是5 - i 。

此外,当进行第3趟排序时,所有元素已经有序,因此无需进行下一趟排序,可以设置变量flag,标志每趟排序过程中是否出现逆序,如果没有,则排序完成,否则继续进行排序。

代码如下图所示:

public class BubbleSort {
    public void BubbleSorts(int[] arr) {
        boolean flag = true;
        for(int i =0 ;i< arr.length - 1;i++) {
            for(int j = 1;j< arr.length-i;j++) {
                if(arr[j-1] > arr[j]) {
                    flag = false;
                    int temp = arr[j-1];
                    arr[j-1] = arr[j];
                    arr[j] = temp;
                }
            }
            if(flag) {
                break;
            }
        }
    }
    
    public static void main(String[] args) {
        // 冒泡排序
        int[] arr = {10,23,1,34,22};
        BubbleSort bubbleSort = new BubbleSort();
        bubbleSort.BubbleSorts(arr);
        for(int i =0;i<arr.length;i++) {
            System.out.print(arr[i]+ " ");
        }
        
    }

}

 

posted @ 2022-12-02 20:05  zwGitOne  阅读(25)  评论(0编辑  收藏  举报