欢迎来到Felix的博客

雨恨云愁,江南依旧称佳丽。水村渔市。一缕孤烟细。天际征鸿,遥认行如缀。平生事。此时凝睇。谁会凭阑意
返回顶部

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的情况,避免的固定情况

posted @ 2021-01-07 11:35  felixtester  阅读(83)  评论(0)    收藏  举报