您的位置:首页 > 其它

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

2016-04-12 20:33 363 查看
快速排序:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: