Python实现快速排序算法
代码
'''
排序的数据只能是列表,但是列表中元素的数据可以是其他类型的,因为有自定义函数进行比较;
排序的范围是给定的下表[p, r]间的的元素,包括p和r;
返回值是r下标的数据在列表下标[p, r]对应的数据中正确的排序位置;
在计算下标r的数据的位置时,还进行数据的排序,排序会按照给定的函数进行数据的比较;
函数的返回值是true则是升序排序,否则是降序排序(升序降序只是对有序列表的一个描述)。
按实际的数据类型进行函数的编写。
'''
def partion(list, low, height, fun):
i, j = low, low
while j < height:
if fun(list[j], list[height]):
list[i], list[j] = list[j], list[i]
i += 1
j += 1
list[i], list[height] = list[height], list[i]
return i
def partion1(list, low, height):
temp = list[low]
while low < height:
while low < height and list[height] > temp:
height -= 1
list[low] = list[height]
while low < height and list[low] <= temp:
low += 1
list[height] = list[low]
list[low] = temp
return low
def quickSort(list, p, r, fun):
if p < r:
q = partion(list, p, r, fun)
quickSort(list, p, q - 1, fun)
quickSort(list, q + 1, r, fun)
if __name__ == "__main__":
def func(a, b):
if a < b:
return True
list1=[15,2,8,7,1,3,5,60,95,3,56,34,123,4213,12,341,5,123,4,12,61,234,15,324,123,12,3,21,4,23,41,5,2134,32,5,123,4,2315,123,5123,5,21,5]
quickSort(list1, 0, len(list1) - 1, func)
print (list1)