美文网首页
冒泡排序

冒泡排序

作者: Thisislife | 来源:发表于2019-01-10 11:06 被阅读0次

冒泡排序俗称穷举法或者蛮力法排序,是一种效率比较低的排序方式,时间复杂度O(n^2) ,在数据量非常大的情况下,速度非常慢,只适用于数据量小的排序场景。

描述:

比较相邻两个元素大小,若前一个比后一个大,则交换位置,每一轮交换结束最大的元素都会被排到最后,重复操作至排序完成。

动画:

ps:图片来自https://www.cnblogs.com/onepixel/articles/7674659.html

冒泡排序动画.gif

代码:

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

上面是基础版冒泡排序的写法,同学们都知道这种写法是可以优化的,假如程序在走到一半的时候数组已经是排好序的,这时候程序就不会再进行交换操作,后面的代码也就没必要继续执行了。

    private void bubbleSort(int[] array){
        for (int i = array.length - 1; i > 1; i--) {
            //有没有交换记录
            boolean hasSwap = false;
            for (int j = 0; j < i; j++) {
                if (array[j] > array[j+1]){
                    int temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    hasSwap = true;
                }
            }
            //如果本次循环没有交换操作,直接退出
            if (!hasSwap){
                break;
            }
        }
    }

相关文章

网友评论

      本文标题:冒泡排序

      本文链接:https://www.haomeiwen.com/subject/ytvorqtx.html