冒泡排序

冒泡排序是一種最簡單的排序算法。顧名思義郑现,就是每次排序之后,最大的元素會(huì)像氣泡浮出水面一樣移動(dòng)到最后的位置辛友,每一次循環(huán)都能確定一個(gè)序列中的最大元素邓梅。

算法思想:

  1. 比較相鄰的兩個(gè)元素,如果第一個(gè)比第二個(gè)大殿遂,就交換
  2. 對每一對相鄰的兩個(gè)元素執(zhí)行同樣的操作幢竹,從開始執(zhí)行到最后,這一步做完之后循签,最后的元素將是最大的元素
  3. 對前面n-1個(gè)元素執(zhí)行1,2兩步
  4. 重復(fù)執(zhí)行前面步驟,直到?jīng)]有一對元素需要比較交換

算法代碼

void bubbleSort(int array[], int length)  
{  
    int i, j, tmp;
    if (1 >= length)
    return;
    for (i = length-1; i > 0; i--) {
        for (j = 0; j < i; j++) {
            if (array[j] > array[j+1]) { 
                tmp = array[j];
                array[j] = array[j+1];
                array[j+1] = tmp;
            }
        }
    }
}

算法分析

  • 最好情況下兰粉,即一開始就是有序的,那么就不用執(zhí)行交換操作了,只需要執(zhí)行1+2+3+…+n次比較舔琅,時(shí)間花銷為n(n-1)/2课蔬,因此,最優(yōu)復(fù)雜度為O(n^2)
  • 最差情況下扎即,也就是開始逆序,那么每一次排序都要比較和交換兩個(gè)元素,時(shí)間花銷為3n(n-1)/2傻盟,因此,最差時(shí)間復(fù)雜度為O(n^2)诽表,相比于上面的最優(yōu)情況,就是多了上面代碼中的交換操作。
  • 平均情況下平痰,時(shí)間復(fù)雜度為O(n^2)。
  • 空間復(fù)雜度為交換過程中申請的額外空間,顯然舞虱,我們只需要一個(gè)變量,因此復(fù)雜度為O(1)浑槽。
  • 很多地方認(rèn)為冒泡排序的最優(yōu)復(fù)雜度為O(n)畸冲,這是另一種優(yōu)化方法算行,就是引入一個(gè)標(biāo)志位儡陨,用于判斷是否已經(jīng)有序了呀枢,當(dāng)?shù)谝惶吮闅v,全部元素?zé)o需交換进宝,那么標(biāo)志位置位未玻,無需后續(xù)的操作绰疤,排序結(jié)束,只進(jìn)行了一趟遍歷,因此為O(n)蛾方。
  • 有些地方認(rèn)為最好的空間復(fù)雜度為O(0)释簿,因?yàn)榻粨Q無需引入變量,當(dāng)然這也是可行的,但是最好不要這樣做夺巩,因?yàn)檫@樣容易復(fù)雜化程序的理解征绎。

過程展示

bubble-sort.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歼指,一起剝皮案震驚了整個(gè)濱河市挟阻,隨后出現(xiàn)的幾起案子坷备,更是在濱河造成了極大的恐慌丁侄,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異订歪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚁袭,“玉大人删性,你說我怎么就攤上這事蹬挺∪悍ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵译仗,是天一觀的道長。 經(jīng)常有香客問我,道長咱圆,這世上最難降的妖魔是什么忱详? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任航唆,我火速辦了婚禮,結(jié)果婚禮上颓帝,老公的妹妹穿的比我還像新娘锣枝。我一直安慰自己厢拭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布撇叁。 她就那樣靜靜地躺著供鸠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陨闹。 梳的紋絲不亂的頭發(fā)上楞捂,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音正林,去河邊找鬼泡一。 笑死,一個(gè)胖子當(dāng)著我的面吹牛觅廓,可吹牛的內(nèi)容都是我干的鼻忠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杈绸,長吁一口氣:“原來是場噩夢啊……” “哼帖蔓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞳脓,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤塑娇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后劫侧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埋酬,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年烧栋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了写妥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡审姓,死狀恐怖珍特,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魔吐,我是刑警寧澤扎筒,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布莱找,位于F島的核電站,受9級(jí)特大地震影響嗜桌,放射性物質(zhì)發(fā)生泄漏奥溺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一症脂、第九天 我趴在偏房一處隱蔽的房頂上張望谚赎。 院中可真熱鬧,春花似錦诱篷、人聲如沸壶唤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闸盔。三九已至,卻和暖如春琳省,著一層夾襖步出監(jiān)牢的瞬間迎吵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工针贬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留击费,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓桦他,卻偏偏與公主長得像蔫巩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子快压,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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

  • 項(xiàng)目需要圆仔,自己上學(xué)的時(shí)候接觸過一些算法,我記得當(dāng)時(shí)算法那門考了系里最高分蔫劣,98分坪郭,想著沒什么用呢,誰知道這兩天就用...
    愛尚開發(fā)閱讀 1,844評論 0 3
  • 相關(guān)文章算法(一)時(shí)間復(fù)雜度 前言 排序是算法的基礎(chǔ)脉幢,排序有很多種方法歪沃,有些方法實(shí)現(xiàn)起來很簡單,但是效率較差嫌松,我們...
    劉望舒閱讀 714評論 4 3
  • 冒泡排序插入排序插入排序和冒泡排序分析 冒泡排序 冒泡排序(英語:Bubble Sort沪曙,臺(tái)灣另外一種譯名為:泡沫...
    六尺帳篷閱讀 2,180評論 0 9
  • 此時(shí)已是九月,微風(fēng)輕輕拂過豆瘫,帶來濃郁的桂花香珊蟀。 有人說菊值,桂花香是淡淡,素雅的淺黃外驱。是從一縷風(fēng)中育灸,從春天的鵝柳里偷取...
    墨痕愫語閱讀 2,669評論 78 158
  • 古有“魚與熊掌不可得兼”,道理我都懂昵宇,可是“看球和睡覺豈能共存”磅崭?這不,歐洲杯現(xiàn)在是踢得熱火朝天瓦哎,朋友圈各種指點(diǎn)江...
    有什么好昵稱閱讀 491評論 0 0