经典排序算法python回顾之一 交换排序
生活随笔
收集整理的這篇文章主要介紹了
经典排序算法python回顾之一 交换排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
冒泡排序:
簡介
有一列無序的氣泡,比較第一個和第二個氣泡的大小;如果第二個氣泡大,次序不做調整;如果第一個氣泡比較大,將這個兩個氣泡交換位置。
然后接著比較經過上面處理后氣泡序列的第二個與第三個氣泡,策略同上。
一直這樣處理下去,處理完最后一對氣泡的時候,整個序列中最大的氣泡將交換到最后的位置。
同樣的策略處理剩下的n-1個氣泡,這樣次大的氣泡將排在倒數第二位...最后得到由大至小的有序序列。
最優時間復雜度O(n),最差時間復雜度O(n^2),平均時間復雜度O(n^2).
python代碼
def bubble_sort(List):for j in range(len(List)-1,0,-1):for i in range(0,j):if List[i]>List[i+1]:List[i],List[i+1]=List[i+1],List[i]return List
快速排序:
簡介
在無序數列中,先任選一個作為基準,然后將這些無序的數遍歷,比此基準小的放到基準之前,比基準大的放到之后,如此便將數列利用基準分割成兩部分。
在得到的兩部分無序數列中,遞歸調用上面策略,最后將得到有序數列。
最優時間復雜度O(nlogn),最差時間復雜度O(n^2),平均時間復雜度O(nlogn).
python代碼
def qsort(L): if len(L) <= 1:return L return qsort([lt for lt in L[1:] if lt < L[0]]) + L[0:1] + \ qsort([ge for ge in L[1:] if ge >= L[0]])轉載于:https://my.oschina.net/vincent67/blog/185681
總結
以上是生活随笔為你收集整理的经典排序算法python回顾之一 交换排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理解并演示:思科的netflow功能(2
- 下一篇: linux 死锁分析