python-排序算法-快速排序算法
一、快排的思想 ''' 快速排序: 思考的问题: 使用分治思想; 将问题拆解到最小范围; 直到计算出结果; 逻辑描述: 1 首先取一个基准值,一般为 arr[0]; 2 遍历 arr 将比基准值小的放在 less 中,比基准值大的放到 large 中; 3 合并数组 less + arr[0] + large; 4 递归重复 1~3 步骤; '''
二、执行结果
源数组 [5, 2, 9, 3, 7, 4, 6, 1, 8]
排序后 [1, 2, 3, 4, 5, 6, 7, 8, 9]
times= 5
三、代码
#!/usr/bin/env python3
# coding=utf-8
'''
快速排序:
思考的问题:
使用分治思想;
将问题拆解到最小范围;
直到计算出结果;
逻辑描述:
1 首先取一个基准值,一般为 arr[0];
2 遍历 arr 将比基准值小的放在 less 中,比基准值大的放到 large 中;
3 合并数组 less + arr[0] + large;
4 递归重复 1~3 步骤;
'''
times = 0
def quickSort(arr):
if len(arr)<2:
return arr
global times
times += 1
base = arr[0] # 基准值,一般选择第 0 位
less = [i for i in arr[1:] if i < base] # 比基准值小的数组
large = [i for i in arr[1:] if i > base] # 比基准值大的数据
return quickSort(less) + [base] + quickSort(large)
def main():
arr = [5,2,9,3,7,4,6,1,8]
print('源数组',arr)
lst = quickSort(arr)
print('排序后',lst)
print('times=',times)
if __name__ == '__main__':
main()