Python天天美味(30) – python資料結構與演算法之快速排序

來源:互聯網
上載者:User
文章目錄
  • 1. 快速排序
  • 4. 結果

快速排序的原理是將取出第一個數,將整個數組分為兩波,一撥都大於這個數,另一波都小於這個數,然後遞迴用同樣的方法處理第一波數字和第二波數字。都說是“快速排序”,效率肯定比其他的一般排序演算法高,下面我們就來驗證一把,比較一下所謂的“快速排序”和“冒泡排序”的效能差異。

1. 快速排序def quicksort(data, low = 0, high = None):
    if high == None:
        high = len(data) - 1
    if low < high:
        s, i, j = data[low], low, high
        while i < j:
            while i < j and data[j] >= s:
                j = j - 1
            if i < j:
                data[i] = data[j]
                i = i + 1
            while i < j and data[i] <= s:
                i = i + 1
            if i < j:
                data[j] = data[i]
                j = j - 1
        data[i] = s
        quicksort(data, low, i - 1)
        quicksort(data, i + 1, high)2. 冒泡排序
def bubblesort(data):
    for i in range(len(data) - 1, 0, -1):
        for j in range(0, i):
            if data[j] > data[j + 1]:
                data[j], data[j + 1] = data[j + 1], data[j]

 

3. 效能比較

上面看來,冒泡排序只需要5行,夠簡潔的,但效能咋樣呢?來比較一下吧:

import random
import datetime
import copy

def sort_perfmon(sortfunc, data):
    sort_data = copy.deepcopy(data)
    t1 = datetime.datetime.now()
    sortfunc(sort_data)
    t2 = datetime.datetime.now()
    print sortfunc.__name__, t2 - t1
    #print sort_data

data = [random.randint(0, 65536) for i in range(2000)]
#print data
sort_perfmon(quicksort, data)
sort_perfmon(bubblesort, data)

 

4. 結果

通過對隨機的2000個數字進行排序,下面的結果可非常容易的看出,快速排序的優勢是非常大的。

quicksort 0:00:00.062000
bubblesort 0:00:03.563000

 

5. 代碼下載

http://files.cnblogs.com/coderzh/Code/sorttest.rar 

 

 

Python 天天美味系列(總)

Python 天天美味(28) - urlopen    

Python 天天美味(29) - 調用VC++的動態連結程式庫(DLL) 

Python 天天美味(30) - python資料結構與演算法之快速排序 

Python 天天美味(31) - python資料結構與演算法之插入排序 

Python 天天美味(32) - 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.