冒泡排序的優(yōu)化

原始的冒泡排序相對而言是非常耗時的僚碎,即使一個數(shù)組經(jīng)過幾輪交換已經(jīng)變的有序了锅知,例如 [2,1,3,4,5,6,7] 這個數(shù)組脯丝,經(jīng)過第一輪,已經(jīng)變成有序的了宾濒,但頑固的冒泡還是要繼續(xù)進(jìn)行沒有營養(yǎng)的兩兩比較,從而犧牲了時間屏箍。

//冒泡排序
    public void bubbleSort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=arr.length-1;j>i;j--){
                if(arr[j]<arr[j-1]){
                    int tmp=arr[j];
                    arr[j]=arr[j-1];
                    arr[j-1]=tmp;
                }
            }
        }
    }

冒泡排序的算法優(yōu)化

如果用一個flag來判斷一下绘梦,當(dāng)前數(shù)組是否已經(jīng)有序,如果有序就退出循環(huán)赴魁,這樣可以明顯的提高冒泡排序的表現(xiàn)

由于冒泡排序的時間復(fù)雜度為 O(n2) 所以當(dāng)數(shù)據(jù)越多的時候卸奉,越慢,非常不適合大數(shù)據(jù)的排序颖御。

對于上面的序列我們發(fā)現(xiàn)榄棵,含有10個元素的序列需要45次比較(第一趟9次,第二趟8次潘拱,第三趟7次疹鳄,....... ,第九趟1次)芦岂,那么真的需要45次嗎瘪弓?對于下面的這種序列{1,2,4,5,8,9,10,14,15,13},使用上面的算法也是45次禽最,但觀察發(fā)現(xiàn)該序列大部分是有序的腺怯,第一趟將15沉底放置最后,得到{1,2,4,5,8,9,10,14,13,15}川无,第二趟將14沉底放置最后呛占,得到{1,2,4,5,8,9,10,13,14,15},從第三趟到最后一趟都無需再移動舀透,所以那些比較都是徒勞的栓票,因此,我們對上述算法進(jìn)行如下優(yōu)化,減少算法的比較次數(shù)走贪。優(yōu)化的方法就是加一個標(biāo)志位佛猛,記錄本趟比較是否發(fā)生交換,下一趟根據(jù)這個標(biāo)志位坠狡,若上一次沒有交換继找,則本趟比較無需進(jìn)行。

    //冒泡排序的改良版
    public void bubbleSort_plus(int[] arr){
        boolean flag=true;
        for(int i=0;i<arr.length-1&&flag;i++){
            flag=false;
            for(int j=arr.length-1;j>i;j--){
                if(arr[j]<arr[j-1]){
                    flag=true;
                    int tmp=arr[j];
                    arr[j]=arr[j-1];
                    arr[j-1]=tmp;
                }
            }
        }
    }

總體來說逃沿,冒泡排序的效率是較為低下的婴渡,在數(shù)據(jù)量小的情況下可以使用,否則應(yīng)該選擇其他的排序算法凯亮。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末边臼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子假消,更是在濱河造成了極大的恐慌柠并,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件富拗,死亡現(xiàn)場離奇詭異臼予,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)啃沪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門粘拾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人创千,你說我怎么就攤上這事缰雇。” “怎么了签餐?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵寓涨,是天一觀的道長。 經(jīng)常有香客問我氯檐,道長戒良,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任冠摄,我火速辦了婚禮糯崎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘河泳。我一直安慰自己沃呢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布拆挥。 她就那樣靜靜地躺著薄霜,像睡著了一般某抓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惰瓜,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天否副,我揣著相機(jī)與錄音,去河邊找鬼崎坊。 笑死备禀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奈揍。 我是一名探鬼主播曲尸,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼男翰!你這毒婦竟也來了另患?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤奏篙,失蹤者是張志新(化名)和其女友劉穎柴淘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秘通,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年敛熬,在試婚紗的時候發(fā)現(xiàn)自己被綠了肺稀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡应民,死狀恐怖话原,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诲锹,我是刑警寧澤繁仁,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站归园,受9級特大地震影響黄虱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庸诱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一捻浦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桥爽,春花似錦朱灿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春侣灶,著一層夾襖步出監(jiān)牢的瞬間习霹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工炫隶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淋叶,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓伪阶,卻偏偏與公主長得像煞檩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子栅贴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容