《算法圖解》2

4、快速排序數組

 

分而治之DC(divide and conquer)(遞歸式問題解決方法):快速排序數據結構

DC原理:less

  • 找出簡單的基線條件
  • 肯定如何縮小問題的規模,使其符合基線條件

快速排序:尋找基準值;將數組分紅兩個子數組;對子數組進行快速排序ide

複雜度:O(NlogN)ui

選擇數組第一個元素做爲基準值:spa

快遞排序代碼:code

 

1 def quicksort(array): 2     if len(array) <2: 3         return array 4     else: 5         pivot = array[0] 6         less = [i for i in array[1:] if i <= pivot] 7         greater = [i for i in array[1:] if i > pivot] 8         return quicksort(less) + [pivot] + quicksort(greater) 9 print(quicksort([10, 5, 2, 3, 7, 13]))

 

 還有一種數組sum求和,利用遞歸來實現??how??blog

//排序

;;;;;;;;;;;;遞歸

 

//

 

 

 

4、散列表

 

  也是一種數據結構

 

 散列表檢查是否重複速度很是快。

code(用來避免重複):

 1 voted = {}
 2 def check_voter(name):
 3     if voted.get(name):
 4         print ("kick them out!")
 5     else:
 6         voted[name] = True
 7         print ("let them vote!")
 8 
 9 check_voter("tom")
10 check_voter("tom")

 

 

 

 

 

 

 

相關文章
相關標籤/搜索