溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中冒泡排序、快速排序、堆排序的實現(xiàn)方法

發(fā)布時間:2020-12-09 09:29:39 來源:億速云 閱讀:291 作者:小新 欄目:編程語言

小編給大家分享一下Python中冒泡排序、快速排序、堆排序的實現(xiàn)方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、冒泡排序

def bubble_sort(array, n):
    for i in range(n):
        for j in range(1, n - i):
            if array[j - 1] > array[j]:
                array[j - 1], array[j] = array[j], array[j - 1]

2、快速排序

def quick_sort(array, l, r):
    if l < r:
        q = partition(array, l, r)
        quick_sort(array, l, q - 1)
        quick_sort(array, q + 1, r)

def partition(array, l, r):
    x = array[r]
    i = l
    for j in range(l, r):
        if array[j] <= x:
            array[i], array[j] = array[j], array[i]
            i += 1
    array[i], array[r] = array[r], array[i]
    return i

3、堆排序

注意堆排序外面還有一個在下面測試部分的循環(huán)。

# 堆排序
def heap_sort(array, n, length):
    l = 2*n + 1
    r = 2*n + 2
    if l <= length - 1:
        heap_sort(array, l, length)
    if r <= length - 1:
        heap_sort(array, r, length)

    if l >= length:
        return
    index = l
    if r < length and array[r] > array[l]:
        index = r

    if array[n] < array[index]:
        array[n], array[index] = array[index], array[n]

4、測試部分

if __name__ == '__main__':
    a = input("輸入數(shù)組元素:").split(" ")
    a = list(map(int, a))
    b = a.copy()
    c = a.copy()

    # 冒泡排序
    bubble_sort(a, len(a))
    print(a)

    # 快速排序
    quick_sort(b, 0, len(b) - 1)
    print(b)

    # 堆排序
    for i in range(len(c)):
        heap_sort(c, 0, len(c) - i)
        c[0], c[len(c) - i - 1] = c[len(c) - i - 1], c[0]
    print(c)

5、測試結(jié)果

輸入數(shù)組元素:4 8 3 6 7 1 5
[1, 3, 4, 5, 6, 7, 8]
[1, 3, 4, 5, 6, 7, 8]
[1, 3, 4, 5, 6, 7, 8]

Process finished with exit code 0

以上是“Python中冒泡排序、快速排序、堆排序的實現(xiàn)方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI