Algorithms Part 1-Question 2-QuickSort-快速排序演算法

來源:互聯網
上載者:User
Algorithms: Design and Analysis,
Part 1 

 

  第一章講的是分治演算法,即DC,這一章講的是快速排序QuickSort。作業難度已經增加了,Problem Sets做了兩次一不小心只得了四分,編程作業也作了兩次才作對。

  這次作業是實現快速排序,並改變哨兵元素的選擇方法比較效能。哨兵可以選擇為第一個、最後一個元素,也可以選取首、尾、中間三個元素第二大的數字。

  最後一種方法實現時可以借用list的排序方法。

  代碼如下:

def quickSort(arrayall):    if len(arrayall)<=1:return arrayall,0    #sel p    #p=0    #p=len(arrayall)-1    p=(len(arrayall)-1)/2    a=[(arrayall[0],0),(arrayall[p],p),(arrayall[-1],len(arrayall)-1)]    a.sort()    tmp,p=a[1]        if p!=0:        arrayall[0],arrayall[p]=arrayall[p],arrayall[0]    indi=1    for indj in range(1,len(arrayall)):        if arrayall[indj]<arrayall[0]:            arrayall[indi],arrayall[indj]=arrayall[indj],arrayall[indi]            indi+=1    arrayall[0],arrayall[indi-1]=arrayall[indi-1],arrayall[0]        arrayallp,mp=quickSort(arrayall[:indi-1])    arrayallq,mq=quickSort(arrayall[indi:])    return arrayallp+[arrayall[indi-1]]+arrayallq,mp+mq+len(arrayall)-1f=open('QuickSort.txt','r')listall=f.read()listall=[int(x) for x in listall.split()]f.close()sortedlist,m=quickSort(listall)print m    

  當然實驗結果是最後一種方法效能比較優越。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.