算法——排序——快速排序

来源:互联网 发布:平板淘宝卖家 编辑:程序博客网 时间:2024/05/22 14:23

快速排序:

1.原地排序

2.O(nlogn)(最坏O(n^2) 这也是严重缺点之一)

3.要尽量保证输入的元素是基本无序的,因为在有序情况下,其时间复杂度是O(n^2)

4.不稳定

5.与归并排序一样是分治法的经典算法

Code:

class Sort:    @classmethod    def sort(cls, arr):        cls.sortQuick(arr, 0, len(arr) -1)    @classmethod    def sortQuick(cls, arr, lo, hi):        if lo >= hi:            return        p = cls.position(arr, lo, hi)        cls.sortQuick(arr, lo, p)        cls.sortQuick(arr, p+1, hi)    @classmethod    def position(cls, arr, lo, hi):        v = arr[lo]        i = lo        j = hi        while True:            while i < hi and arr[i] <= v:                i += 1            while j > lo and arr[j] >= v:                j -= 1            if i >= j:                break            else:                arr[i], arr[j] = arr[j], arr[i]        arr[lo], arr[j] = arr[j], arr[lo]        return j


0 0
原创粉丝点击