演算法6 fast sort演算法

2021-06-22 20:29:36 字數 981 閱讀 7144

最近工作專案忙的是焦頭爛額,不得不停止了演算法的更新,在專案修整期,試著再寫點什麼內容。

本來想接著寫nlp和資料探勘的相關演算法,後來考慮時間問題,寫點最最最基本的排序避免手生。

快速排序演算法,排序演算法中的經典演算法,時間複雜度,o(n*lgn)

演算法很容易理解,對於乙個array,取任意乙個數,和其他的數作比較,小於它的排左邊array,不小於它的排右邊array,然後再迭代左右array。最終收斂於最小array時返回。

時間複雜度在最優情況下,每次分成左右兩個相同長度的array,則分解次數為lgn,而每次的比較都是和n呈線性變化的次數,故複雜度為o(n*lgn)。最差情況,如果每次分array的時候,一次只能去掉乙個,那麼需要分解n次,複雜度為o(n^2)

python demo:

#coding:utf-8

'''created on 2023年7月20日

@author: hao

'''class fastsort():

def process(self, alist):

lengthlist = len(alist)

if lengthlist<=1:

return alist

intertemp = alist[0]

leftlist = list()

rightlist = list()

for i in range(1,lengthlist):

if alist[i]<=intertemp:

else:

return self.process(leftlist)+[intertemp]+self.process(rightlist)

if __name__=='__main__':

inputlist = [1,3,1,2,7,5,90]

print fastsort().process(alist=inputlist)

演算法筆記 6 匈牙利演算法

今天我們來看乙個沒有前幾篇講的那麼常用,但是很有用的演算法 匈牙利演算法 hungarian algorithm 匈牙利演算法主要用於解決一些與二分圖匹配 有關的問題,所以我們先來了解一下二分圖。二分圖 bipartite graph 是一類特殊的圖,它可以被劃分為兩個部分,每個部分內的點互不相連。...

演算法 排序(6)

快速排序 quicksort 1 演算法思想 快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 1 分治法的基本思想 分治法的基本思想是 將原問題分解為若干個規模更小但結構與原問題相似的子問...

演算法導論(6)

演算法最壞情況執行時間 平均情況 期望執行時間 插入排序 theta n 2 theta n 2 歸併排序 theta n lg n theta n lg n 堆排序 o n lg n 快速排序 theta n 2 theta n lg n 期望 計數排序 theta k n theta k n 基...