Python冒泡排序、快速排序、堆排序

美女程序员鼓励师

本文主要向大家介绍冒泡排序、快速排序、堆排序的使用代码以及他们的测试过程和结果。

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、堆排序

注意堆排序外面还有一个在下面测试部分的循环。

# 堆排序

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("输入数组元素:").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、测试结果

输入数组元素: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冒泡排序、快速排序、堆排序 的全部内容, 来源链接: utcz.com/z/541645.html

回到顶部