排序算法Python實(shí)現(xiàn)

from collections import defaultdict

歸并排序 nlg(n)

def merge_sort(seq):
????mid = len(seq) // 2
????lef, rgt = seq[:mid], seq[mid:]
????if len(lef) > 1:
????????lef = merge_sort(lef)
????if len(rgt) > 1:
????????rgt = merge_sort(rgt)
????res = []
????while lef and rgt:
????????if lef[-1] > rgt[-1]:
????????????res.append(lef.pop())
????????else:
????????????res.append(rgt.pop())
????res.reverse()
????return (lef or rgt) + res

遞歸版插入排序

def ins_sort_rec(seq, i):
????if i == 0:
????????return
????ins_sort_rec(seq, i - 1)
????j = i
????while j > 0 and seq[j - 1] > seq[j]:
????????seq[j - 1], seq[j] = seq[j], seq[j - 1]
????????j -= 1

遞歸選擇排序

def sel_sort_rec(seq, i):
????if i == 0:
????????return
????max_j = i
????for j in range(i):
????????if seq[j] > seq[max_j]:
????????????max_j = j
????seq[i], seq[max_j] = seq[max_j], seq[i]
????sel_sort_rec(seq, i - 1)

計(jì)數(shù)排序

def counting_sort(A, key=lambda x: x):
????B, C = [], defaultdict(list)
????for x in A:
????????C[key(x)].append(x)
????for k in range(min(C), max(C) + 1):
????????B.extend(C[k])
????return B

快速排序: 也可以叫做一種折半排序

def partition(seq):
????pi, seq = seq[0], seq[1:]
????lo = [x for x in seq if x <= pi]
????hi = [x for x in seq if x > pi]
????return lo, pi, hi

def quick_sort(seq):
????if len(seq) <= 1:
????????return seq
????lo, pi, hi = partition(seq)
????return quick_sort(lo) + [pi] + quick_sort(hi)

def bubble_sort(seq):
????length = len(seq)
????for i in range(length):
????????for j in range(length - i):
????????????if j + 1 >= length:
????????????????break
????????????if seq[j] > seq[j + 1]:
????????????????seq[j], seq[j + 1] = seq[j + 1], seq[j]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末曙求,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子映企,更是在濱河造成了極大的恐慌悟狱,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堰氓,死亡現(xiàn)場(chǎng)離奇詭異挤渐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)双絮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門浴麻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)得问,“玉大人,你說(shuō)我怎么就攤上這事软免」常” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵膏萧,是天一觀的道長(zhǎng)漓骚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)向抢,這世上最難降的妖魔是什么认境? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮挟鸠,結(jié)果婚禮上叉信,老公的妹妹穿的比我還像新娘。我一直安慰自己艘希,他們只是感情好硼身,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著覆享,像睡著了一般佳遂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撒顿,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天丑罪,我揣著相機(jī)與錄音,去河邊找鬼凤壁。 笑死吩屹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拧抖。 我是一名探鬼主播煤搜,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼唧席!你這毒婦竟也來(lái)了擦盾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淌哟,失蹤者是張志新(化名)和其女友劉穎迹卢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徒仓,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婶希,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蓬衡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喻杈。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狰晚,靈堂內(nèi)的尸體忽然破棺而出筒饰,到底是詐尸還是另有隱情,我是刑警寧澤壁晒,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布瓷们,位于F島的核電站,受9級(jí)特大地震影響秒咐,放射性物質(zhì)發(fā)生泄漏谬晕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一携取、第九天 我趴在偏房一處隱蔽的房頂上張望攒钳。 院中可真熱鬧,春花似錦雷滋、人聲如沸不撑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)焕檬。三九已至,卻和暖如春澳泵,著一層夾襖步出監(jiān)牢的瞬間实愚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工兔辅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腊敲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓幢妄,卻偏偏與公主長(zhǎng)得像兔仰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蕉鸳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354