摘要:概要算法理論講解有專業(yè)的書(shū)籍和視頻資源,本篇文章主要展示算法排序的語(yǔ)言描述,具體講解的資源地址參見(jiàn)文末參考引用冒泡排序冒泡排序打印結(jié)果為選擇排序選擇排序打印結(jié)果為插入排序插入排序打印結(jié)果為歸并排序歸并排序分歸并排序治打印結(jié)果為
概要
算法理論講解有專業(yè)的書(shū)籍和視頻資源,本篇文章主要展示算法排序的python語(yǔ)言描述,具體講解的資源地址參見(jiàn)文末參考引用
冒泡排序(Bubble Sort)# 冒泡排序 def bubbleSort(seq=None, reversed=False): lens = len(seq) for i in range(lens): for j in range(lens - i - 1): if (seq[j] < seq[j + 1] if reversed else seq[i] > seq[j]): seq[j], seq[j + 1] = seq[j + 1], seq[j] return seq if __name__=="__main__": #打印結(jié)果為:[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] print(bubbleSort([10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 11, 15, 0, 12, 14, 13],True))選擇排序(Selection Sort)
# 選擇排序 def selectionSort(seq=None, reversed=False): lens = len(seq) for i in range(lens): min_index = i for j in range(i + 1, lens): if (seq[min_index] < seq[j] if reversed else seq[i] > seq[j]): min_index = j seq[i], seq[min_index] = seq[min_index], seq[i] return seq if __name__ == "__main__": # 打印結(jié)果為:[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] print(selectionSort([10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 11, 15, 0, 12, 14, 13], True))插入排序(Insertion Sort)
# 插入排序 def insertionSort(seq=None, reversed=False): lens = len(seq) for i in range(1, lens): key = seq[i] j = i while j > 0 and (seq[j - 1] < seq[j] if reversed else seq[j - 1] > seq[j]): seq[j], seq[j - 1] = seq[j - 1], seq[j] j -= 1 return seq if __name__ == "__main__": # 打印結(jié)果為:[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] print(insertionSort([10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 11, 15, 0, 12, 14, 13], True))歸并排序(Selection Sort)
# 歸并排序(分) def mergeSort(seq): if len(seq) < 2: return seq mid = len(seq) // 2 left = mergeSort(seq[:mid]) right = mergeSort(seq[mid:]) return merge(left, right) # 歸并排序(治) def merge(left, right): if not len(left) or not len(right): return left or right result = [] i, j = 0, 0 while (len(result) < len(left) + len(right)): if left[i] < right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 if i == len(left) or j == len(right): result.extend(left[i:] or right[j:]) break return result if __name__ == "__main__": # 打印結(jié)果為:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] print(mergeSort([10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 11, 15, 0, 12, 14, 13]))快速排序(Selection Sort)
# 快速排序 def quickSort(seq, start, end): if start < end: split = partition(seq, start, end) quickSort(seq, start, split - 1) quickSort(seq, split + 1, end) return seq def partition(seq, start, end): pivot_index = start - 1 for i in range(start, end): # 選擇最右邊的為pivot if seq[i] < seq[end]: pivot_index += 1 seq[pivot_index], seq[i] = seq[i], seq[pivot_index] seq[end], seq[pivot_index + 1] = seq[pivot_index + 1], seq[end] return pivot_index + 1 if __name__ == "__main__": # 打印結(jié)果為:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] print(quickSort([10, 1, 3, 5, 7, 9, 2, 4, 6, 8, 11, 15, 0, 12, 14, 13], 0, 15))參考引用
1, sole learn,ios、android均可免費(fèi)下載
2, github源文件地址
3,北大公開(kāi)課 算法設(shè)計(jì)與分析 屈婉玲教授
4,數(shù)據(jù)結(jié)構(gòu)-浙江大學(xué)
5,算法(普林斯頓大學(xué))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44578.html
摘要:數(shù)據(jù)結(jié)構(gòu)和算法樹(shù)快速排序,堆排序,插入排序其實(shí)八大排序算法都應(yīng)該了解一致性算法,一致性算法的應(yīng)用的內(nèi)存結(jié)構(gòu)。如何存儲(chǔ)一個(gè)的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面試是一個(gè)雙向選擇的過(guò)程,不要抱著畏懼的心態(tài)去面試,不利于自己的發(fā)揮。 前言 16年畢業(yè)到現(xiàn)在也近兩年了,最近面試了阿里集團(tuán)(菜鳥(niǎo)網(wǎng)絡(luò),螞蟻金服),網(wǎng)易,滴滴,點(diǎn)我達(dá),最終收到點(diǎn)我達(dá),網(wǎng)易o(hù)ffer,螞蟻金服二面掛掉,...
小編寫這篇文章的主要目的,主要是給大家講解一下,關(guān)于最大公約數(shù)的求解方法,下面小編集中給大家總結(jié)一下,具體操作的五種方法?! 》椒ㄒ唬憾坛ā 《坛ㄊ乔笞畲蠊驍?shù)的一種方法,也可用來(lái)求最小公倍數(shù)。求幾個(gè)數(shù)最大公因數(shù)的方法,開(kāi)始時(shí)用觀察比較的方法,即:先把每個(gè)數(shù)的因數(shù)找出來(lái),然后再找出公因數(shù),最后在公因數(shù)中找出最大公因數(shù)。后來(lái),使用分解質(zhì)因數(shù)法來(lái)分別分解兩個(gè)數(shù)的因數(shù),再進(jìn)行運(yùn)算。之后又演變?yōu)槎?..
摘要:中只有的作用域是動(dòng)態(tài)作用域的五種綁定初學(xué)時(shí),會(huì)想當(dāng)然認(rèn)為遵循某一條規(guī)律,就像物理學(xué)那樣,然而并不是。的綁定分為五種情況,這五種情況之間毫無(wú)規(guī)律可言。以至指向更加撲朔迷離。 this 到底指向哪里 以下如果沒(méi)提及,則為嚴(yán)格模式。 js中作用域有兩種: 詞法作用域 動(dòng)態(tài)作用域 詞法作用域 詞法作用域指在書(shū)寫代碼時(shí)就被確定的作用域??慈缦麓a var value = 1; ...
摘要:所謂大數(shù)據(jù)及其相關(guān)技術(shù)在經(jīng)歷了高度重視詳細(xì)甄別以及吐故納新之后,實(shí)際成果很可能與我們的認(rèn)知存在較大差異。他們將探討與大數(shù)據(jù)相關(guān)的各類話題,內(nèi)容涵蓋對(duì)抗販賣人口未來(lái)發(fā)展方向乃至人工智能前沿技術(shù)。 請(qǐng)大家不要再糾結(jié)于一塊磁盤能保存多少數(shù)據(jù)或者企業(yè)到底會(huì)不會(huì)采用Hadoop。關(guān)于大數(shù)據(jù)的真正問(wèn)題在于,企業(yè)用戶將如何使用Hadoop、我們的系統(tǒng)到底能在智能化道路上走多遠(yuǎn)、我們又該如何保證這一切都處于...
閱讀 2704·2023-04-25 17:21
閱讀 2564·2021-11-23 09:51
閱讀 2860·2021-09-24 10:32
閱讀 3785·2021-09-23 11:33
閱讀 1986·2019-08-30 15:44
閱讀 3463·2019-08-30 11:18
閱讀 3538·2019-08-30 10:53
閱讀 635·2019-08-26 13:25