快速排序算法
基本思想
快递排序算法是使用较多的一种排序算法,具体快速排序思想是:主要是通过一趟排序将待排记录分隔成独立的两部分,其中的一部分比关键字(一般来说选择队头或者队尾的元素)小,后面一部分比关键字大,然后再对这前后的两部分分别采用这种方式进行排序,通过递归的运算最终达到整个序列有序。
算法流程见代码:
时间复杂度是:O(n*logn)
def quicksort(nums):
# 如果数字小于或者等于1,直接退出
if len(nums) <= 1:
return nums
#分别存储左侧和右侧数组
# 左子数组
less = []
# 右子数组
greater = []
# 基准数 ,第一个数
base = nums.pop()
# 对原数组进行划分
for x in nums:
# 如果小于基准的,则放一堆,大于x 的放一堆
if x < base:
less.append(x)
else:
greater.append(x)
# 采用递归调用
return quicksort(less) + [base] + quicksort(greater)
调用快速排序算法:
nums = [1,3,2,4,7,5,6,8,10,9]
print(quicksort(nums))
输出结果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]