クイックソート
時間の複雑さ: O(nlogn)
#!/usr/bin/env python
# encoding: utf-8
"""
@author: CHENTAOZI
@file: quick_sort.py
@time: 2021/6/10 11:26
"""
def quick_sort(arr):
"""快速排序"""
if len(arr) < 2:
return arr
# 获取基准,随便选哪个都可以,选中间的便于理解
mid = arr[len(arr) // 2]
# 定义基准值左右两个数列
left, right = [], []
# 从原始数组中移除基准值
arr.remove(mid)
for i in arr:
if i <= mid:
# 小于或等于基准值的放在左边
left.append(i)
else:
# 大于基准值的放在右边
right.append(i)
# 使用迭代进行比较
return quick_sort(left) + [mid] + quick_sort(right)
arr = [7, 4, 1, 2, 5, 8, 1, 3, 6, 9, 4, 12, 65, 87, 98, 45]
print(quick_sort(arr))
操作結果:[1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 12, 45, 65, 87, 98]