快速排序(python实现)

来源:互联网 发布:codeforces 知乎 编辑:程序博客网 时间:2024/06/08 14:46

快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。

时间复杂度为o(n2)。

#quick sortdef quick_sort(lists, left, right):    if left >= right:       return lists    key = lists[left]    low = left    high = right    while left < right:        while left < right and lists[right] >= key:            right -= 1        lists[left] = lists[right]        while left < right and lists[left] <= key:            left += 1        lists[right] = lists[left]    lists[right] = key    quick_sort(lists, low, left - 1)    quick_sort(lists, left + 1, high)    return lists
原创粉丝点击