Quicksort in Python

來源:互聯網
上載者:User

標籤:

 1 #quick sort 2 def quicksort(low, high, array):
    limit = 10 3 if low < 0 or high >= len(array): 4 return 5 6 if (high-low)<limit: 7 insertsort(low,high,array) 8 return 9 10 middle = (low+high)/2 11 12 if array[low] > array[middle]:13 exchange(low,middle,array)14 15 if array[middle]>array[high]:16 exchange(middle,high,array)17 18 if array[low]>array[high]:19 exchange(low,high,array)20 21 pivot = array[middle]22 23 exchange(middle,high-1,array)24 25 low_ind = low + 126 27 high_ind = high - 228 29 while low_ind <= high_ind:30 while array[low_ind] < pivot:31 low_ind+=132 33 while array[high_ind] > pivot:34 high_ind-=135 36 if low_ind < high_ind:37 exchange(low_ind,high_ind,array)38 39 low_ind+=140 high_ind-=141 else:42 break43 44 exchange(low_ind,high-1,array)45 46 quicksort(low,low_ind-1,array)47 quicksort(low_ind+1,high,array)48 49 #exchange two element50 def exchange(index1, index2, array):51 temp = array[index1]52 array[index1] = array[index2]53 array[index2] = temp54 55 #insertion sort56 def insertsort(low,high,array):57 if low < 0 or high >= len(array):58 return59 60 outer = low + 161 62 while (outer<=high):63 inner = low64 while (inner<outer):65 if array[outer]<array[inner]:66 array.insert(inner,array[outer])67 del array[outer+1]68 break69 inner+=170 outer+=171 72 #test73 array=[]74 75 quicksort(0,len(array)-1,array)76 77 print array

第一篇隨筆, 就用來寫一下快排吧,畢竟各種面試都會問到的。

我這邊採用了三數中值法 來取pivot, 然後在待排序元素小於limit(這裡設為10)的時候, 換用插入排序。

第一次發博文,自勉之

 

後記:

   發完不就 就看到一篇博文http://www.cnblogs.com/figure9/archive/2010/12/10/1902711.html 研究最短用幾行代碼可以寫完快排.

轉載部分代碼如下:

1 def q_sort(l):2     return l if len(l)<=1 else q_sort([x for x in l[1:] if x<l[0]])+[l[0]]+q_sort([x for x in l[1:] if x>=l[0]])

這邊沒有考慮pivot的選取,永遠選第一個作為pivot,因此有可能退化為最差情形.不過這麼少的代碼就寫完了 還是很強大,初學python不久,兩行代碼都研究了好久。

Quicksort in Python

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.