美文网首页
冒泡排序

冒泡排序

作者: 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