基礎(chǔ)算法——冒泡排序

冒泡排序是基于交換排序的基本思想,兩兩進行比較,一旦不滿足次序要求則進行交換,直到整個序列全部滿足要求為止。冒泡沒進行一次排序,就會把最大的值放到數(shù)組的末尾,當(dāng)執(zhí)行n-1次循環(huán),或者當(dāng)不再發(fā)生交換時,則判斷排序已經(jīng)結(jié)束

    private static int[] BubbleSort(int[] num){
        for (int i = 0; i < num.length-1; i++) {
            //標記是否有哪次循環(huán)是沒有交換元素的,有的話跳出循環(huán)
            boolean canBreak = true;
            // 因為每次循環(huán)之后的最后一位變成有序的了,所以這里減去有序數(shù)組的數(shù)量
            for (int j = 1; j < num.length - i; j++) {
                if (num[j-1] > num[j]) {
                    int temp = num[j - 1];
                    num[j-1] = num[j];
                    num[j] = temp;
                    canBreak = false;
                }
            }
            if (canBreak) {
                break;
            }
        }
        return num;
    }
冒泡排序

算法特點

最好的情況是,數(shù)組一開始為正序,那么只進行一次排序,最壞情況需要進行n-1次排序,時間復(fù)雜度為O(n^2),空間復(fù)雜度為O(1),算法的平均性能較低,比直接插入排序差,當(dāng)n較大,且集合無序的時候,不適合使用冒泡排序。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,308評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,829評論 0 15
  • 概述排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的...
    Luc_閱讀 2,379評論 0 35
  • 今天看到一句話,撐不過去的是茍且,撐過去了就是遠方。這讓我想起高中的時候跑3000米,這是學(xué)校那會兒最長的長跑了,...
    沒有目的閱讀 751評論 4 51
  • 我是一根電線桿, 我只會默默地注視著大地, 虔誠地仰望著藍天。 我不會飛, 但天空有我的痕跡。 我是一棵草, 當(dāng)春...
    曾碧華閱讀 239評論 0 3

友情鏈接更多精彩內(nèi)容