• 技术文章 >Python技术 >Python基础教程

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

    小妮浅浅小妮浅浅2021-01-11 14:51:44原创3566

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

    1、冒泡排序

    1

    2

    3

    4

    5

    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、快速排序

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

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

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    # 堆排序

    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、测试部分

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    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、测试结果

    1

    2

    3

    4

    5

    6

    输入数组元素: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冒泡排序快速排序堆排序
    上一篇:设置python参数遵守优先级 下一篇:python中字典dict函数是如何使用的?

    相关文章推荐

    • 怎么使用python decimal 模块?• python列表推导式是什么意思?• python中集合与列表如何相互转换?• 怎么用python slice函数生成切片?• python param函数用法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网