簡單的桶排序

問題

對n個0~1000的數(shù)進行排序。

解決問題的思想

可以用一個長度為1001的列表中的每一個位置表示一個桶炸裆,每個桶用來標(biāo)記每個數(shù)出現(xiàn)的次數(shù)垃它。最后從前往后遍歷每一個桶,每個桶標(biāo)記的次數(shù)是多少,這個桶的下標(biāo)就打印多少次国拇,輸出結(jié)果即為升序排列洛史。


Paste_Image.png

python代碼實現(xiàn)

#!/usr/bin/python
# encoding: utf-8

import random

# 簡單的桶排序算法

# 生成一百個0~1000的隨機數(shù)
source = [random.randint(0,1000) for i in range(0, 101)]

# 構(gòu)造空桶(長度為1001的列表,每個列表的值初始化為0)
bucket = [0 for i in range(0, 1001)]

# 進行計數(shù)酱吝,每出現(xiàn)一個數(shù)也殖,對應(yīng)的桶的值加一
for i in source:
    bucket[i] += 1

# 從第一個桶遍歷到最后一個桶
for i in range(0, 1001, 1):
    # 這個桶的值出現(xiàn)多少次,就打印多少次
    for j in range(1, bucket[i] + 1):
        print(i),

運行結(jié)果

0 7 12 18 19 31 49 52 63 64 68 74 90 93 98 114 114 119 131 133 138 140 160 162 166 193 201 205 238 254 257 266 277 285 287 306 307 310 322 362 368 373 374 396 415 424 430 439 442 463 463 465 467 481 494 508 529 545 553 569 571 572 593 602 608 619 624 644 645 645 662 663 669 674 680 683 686 691 714 765 766 778 784 786 797 802 813 835 840 841 842 887 888 897 905 929 930 943 945 973 975

時間復(fù)雜度

  • 構(gòu)造空桶循環(huán)了m次(m為桶的個數(shù))务热,進行計數(shù)循環(huán)了n次(n為待排序數(shù)的個數(shù))忆嗜,最后遍歷輸出循環(huán)了m+n次,所以總共執(zhí)行了2(m+n)次崎岂。所以時間復(fù)雜度為O(n)

桶排序的缺點:

  • 如果排序樹的范圍在0~10000000,那就需要這么大的list作為空桶捆毫,可能排序數(shù)的長度只有幾十個,顯然用桶排序很消耗空間冲甘。
    復(fù)雜的桶排序:可以考慮每個桶裝有不同的值绩卤,分配完桶后,對每個桶中的數(shù)據(jù)進行排序算法即可江醇。

*參考資料:《啊哈濒憋!算法》 *

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陶夜,隨后出現(xiàn)的幾起案子凛驮,更是在濱河造成了極大的恐慌,老刑警劉巖条辟,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件黔夭,死亡現(xiàn)場離奇詭異,居然都是意外死亡捂贿,警方通過查閱死者的電腦和手機纠修,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門胳嘲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厂僧,“玉大人,你說我怎么就攤上這事了牛⊙胀溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵鹰祸,是天一觀的道長甫窟。 經(jīng)常有香客問我,道長蛙婴,這世上最難降的妖魔是什么粗井? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上浇衬,老公的妹妹穿的比我還像新娘懒构。我一直安慰自己,他們只是感情好耘擂,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布胆剧。 她就那樣靜靜地躺著,像睡著了一般醉冤。 火紅的嫁衣襯著肌膚如雪秩霍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天蚁阳,我揣著相機與錄音铃绒,去河邊找鬼。 笑死韵吨,一個胖子當(dāng)著我的面吹牛匿垄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播归粉,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼椿疗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了糠悼?” 一聲冷哼從身側(cè)響起届榄,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倔喂,沒想到半個月后铝条,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡席噩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年班缰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悼枢。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡埠忘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馒索,到底是詐尸還是另有隱情莹妒,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布绰上,位于F島的核電站吏砂,受9級特大地震影響苫耸,放射性物質(zhì)發(fā)生泄漏想括。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一迷扇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爽哎,春花似錦谋梭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至产镐,卻和暖如春隘庄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背癣亚。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工丑掺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人述雾。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓街州,卻偏偏與公主長得像,于是被迫代替她去往敵國和親玻孟。 傳聞我的和親對象是個殘疾皇子唆缴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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

  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序黍翎,而外部排序是因排序的數(shù)據(jù)很大面徽,一次不能容納全部...
    每天刷兩次牙閱讀 3,732評論 0 15
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序匣掸,而外部排序是因排序的數(shù)據(jù)很大趟紊,一次不能容納全部...
    蟻前閱讀 5,184評論 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,254評論 0 2
  • 母親常常跟我說:不要把每個人想的都太好了。 我不以為然碰酝,單純地想那是母親把人心想的太壞了霎匈。 人心能有多壞,這我倒是...
    任小希閱讀 187評論 0 0
  • 下載JDK JDK官方下載地址 解壓安裝包 tar -zxvf jdk-8u121-linux-x64.tar.g...
    Gavin的小窩閱讀 222評論 0 1