题目:对给定一个数组进行排序。
思想:任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面。
时间复杂度:O(n logn)
算法:
1. 以第一个数组元素作为基准值,赋值给pivot,即key=array[0];
2. 将数组分成两个子集:小于等于基准值的元素和大雨基准值的元素;
3. 对这两个子数组分别进行快速排序(迭代)。
实现:
'''
功能:快速排序
'''
def quick_sort(array):
if len(array) < 2:
return array # 基线条件:为空或只包含一个元素的数组是“有序”的
else:
pivot = array[0] # 基准值,递归条件
# 由所有小于等于基准值的元素组成的子数组
less = [i for i in array[1:] if i <= pivot]
# 由所有大雨基准值的元素组成的子数组
greater = [i for i in array[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
print(quick_sort([10, 2, 3, 5]))
网友评论