核心:分而治之、递归
1.当数组长度为0或1时,不需要排序,直接返回数组;
2.当数组长度等于2时,需要比较两个元素的大小;
3.当数组长度大于2时,需要找一个基准值,并以其为作基准将数组分成两个数组,并再次递归调用快排

#python
import random
dst_list = [1,5,3,2,43,55,45,23]
def qs(slist):
    if len(slist)<2:
        return slist
    else:
        tmpi = random.randint(0,len(slist)-1)
        tmpv = slist.pop(tmpi)
        less = [i for i in slist if i<tmpv]
        great = [j for j in slist if j>tmpv]
        return qs(less) +[tmpv]+ qs(great)
print(qs(dst_list))

2 个评论

  1. 为什么 tmpi 要随机选一个啊?
    s_list(len(s_list)/2) 不可以吗?二分应该是中间腰斩吧?万一 s_list 有 100 万个元素,你 random 选到第一个,第二个不还是很慢吗?

    彼尔德

回复 彼尔德 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注