python编程练习---快速排序
提供两个思路的快速排序,时间复杂度O(nlogn),最差情况为O(n*n)
固定位置快速排序
def kuaisu(list):
if len(list) < 2:
return list
else:
temp = list[0]
leftlist = [x for x in list[1:] if x <= temp]
rightlist = [x for x in list[1:] if x > temp]
return kuaisu(leftlist) + [temp] + kuaisu(rightlist)
随机位置快速排序
import random
def kuaisu2(list):
if len(list) < 2:
return list
else:
index = random.randint(0,len(list)-1)
temp = list[index]
leftlist = [x for x in (list[:index] + list[index+1:]) if x <= temp]
rightlist = [x for x in (list[:index] + list[index+1:]) if x > temp]
return kuaisu2(leftlist) + [temp] + kuaisu2(rightlist)
之所以采用随机位置,可以使排序过程更趋于nlogn的情况,避免的固定情况
不知则问,不会则学

浙公网安备 33010602011771号