04 快速排序

來源:互聯網
上載者:User

標籤:and   end   highlight   指標   class   star   選擇   中間   左右   

‘‘‘快速排序通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個過程可以遞迴進行,以此達到整個資料變成有序序列‘‘‘import timestart = time.time()def quick_sort(alist, start, end):    # 遞迴的允出準則    if start >= end:        return    # 選擇開頭第一個作為中間數    mid = alist[start]    # low為序列左邊的由左向右移動的遊標    low = start    # 反之    high = end    ‘‘‘左右兩邊的指標都往中間移動,直到相遇‘‘‘    while low < high:        # 如果low 與high 未重合, high指向的元素不比基準元素小,則high向左移動        while low < high and alist[high] >= mid:            high -= 1        # 將high指向的元素放到low位置上        alist[low] = alist[high]        while low < high and alist[low] < mid:            low += 1        alist[high] = alist[low]    # 退出迴圈後,low與high重合,此時所指位置為基準元素的正確位置    # 將基準元素放到該位置    alist[low] = mid    # 對基準元素左邊的子序列進行快速排序    quick_sort(alist, start, low-1)    # 對基準的右邊的子序列進行快速排序    quick_sort(alist, low+1, end)if __name__ == ‘__main__‘:    alist = [5,9,3,7,1,10,4,8,2,6]    quick_sort(alist,0,len(alist)-1)    print(alist)    end = time.time()    print(end-start)

  

04 快速排序

聯繫我們

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