快速排序是对冒泡排序的一种改进。
他的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
第一种方法:
def qsort(array, low, high):
if low < high:
m = subsort(array, low, high)
qsort(array, low, m -1)
qsort(array, m+1, high)
def subsort(array, low, high):
key = array[low]
while low < high:
while low < high and array[high] >= key:
high -= 1
while low < high and array[high] < key:
array[low] = array[high]
low += 1
array[high] = array[low]
array[low] = key
return low
if __name == "__main__":
li = [34,1,2,99,45,0,123,66,54,21]
print li
qsort(li, 0, len(li)-1)
print li
第二种方法:
li = [44,1,2,7,655,88,99,12,63,0]
def qsort(li):
if len(li) <= 1:
return li
return qsort([i for i in li[1:] if i < li[0]]) + li[0:1] + qsort([j for j in li[1:] if j >= li[0]])
print li
print qsort(li)