一、快速排序简介
快速排序(Quick Sort)是一种高效的排序算法,它的基本思想是采用分治法来实现排序。
快速排序的工作原理基于分治的思想。首先选取一个基准元素,通常选择第一个或最后一个元素。然后重新排列数组中的元素,使得比基准值小的元素放在它的左边,比基准值大的元素放在它的右边。接着,算法递归地在基准值左边和右边的两个子数组上执行相同的操作,直到每个子数组只有一个元素或者为空,这样就完成了排序过程。
快速排序的平均时间复杂度为O(n log n),在最坏情况下会退化到O(n^2)
二、Python代码实现
# -*- coding: utf-8 -*-
"""
======================================File Name : quick_sort.pyAuthor : lanmingyong(小黑测试员)date : 2024/6/4 20:30Description: 快速排序(Quick Sort)是一种高效的排序算法,它的基本思想是采用分治法来实现排序。快速排序的工作原理基于分治的思想。首先选取一个基准元素,通常选择第一个或最后一个元素。然后重新排列数组中的元素,使得比基准值小的元素放在它的左边,比基准值大的元素放在它的右边。接着,算法递归地在基准值左边和右边的两个子数组上执行相同的操作,直到每个子数组只有一个元素或者为空,这样就完成了排序过程。快速排序的平均时间复杂度为O(n log n),在最坏情况下会退化到O(n^2)
=======================================
"""def quick_sort(arr): # [9, 11, 7]if len(arr) < 2:return arrmid = arr[0]left_arr = []right_arr = []mid_arr = []for i in arr:if i < mid:left_arr.append(i)if i > mid:right_arr.append(i)if i == mid:mid_arr.append(i)print("分组结果:" + "左边组" + str(left_arr) + "中间组" + str(mid_arr) + "右边组" + str(right_arr))return quick_sort(left_arr) + mid_arr + quick_sort(right_arr)# 验证
arr = [9, 6, 7, 2, 8, 1, 0, 4, 3, 0]
# arr = [89, 65, 21, 8, 76, 79, 0, 86, 51, 33, 34, 8, 76, 53, 93, 88, 65, 0, 92, 56, 76, 9, 0, 54, 9, 37, 94, 72, 92, 72, 88, 44, 34, 48, 14, 22, 76, 34, 45, 50, 66, 4, 77, 41, 64, 24, 65, 99, 16, 64]print(quick_sort(arr))
# 执行输出
"""
分组结果:左边组[6, 7, 2, 8, 1, 0, 4, 3, 0]中间组[9]右边组[]
分组结果:左边组[2, 1, 0, 4, 3, 0]中间组[6]右边组[7, 8]
分组结果:左边组[1, 0, 0]中间组[2]右边组[4, 3]
分组结果:左边组[0, 0]中间组[1]右边组[]
分组结果:左边组[]中间组[0, 0]右边组[]
分组结果:左边组[3]中间组[4]右边组[]
分组结果:左边组[]中间组[7]右边组[8]
[0, 0, 1, 2, 3, 4, 6, 7, 8, 9]
"""
注:如果代码有错误欢迎指出交流,感谢!!
三、动画演示
欢迎大家关注我的订阅号,会不定期分享一些相关的文章,有问题也欢迎一起讨论交流学习!