美文网首页
快速排序算法

快速排序算法

作者: MapleLuv | 来源:发表于2018-07-24 22:03 被阅读0次

题目:对给定一个数组进行排序。

思想:任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面。

时间复杂度: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]))

相关文章

网友评论

      本文标题:快速排序算法

      本文链接:https://www.haomeiwen.com/subject/gtnymftx.html