老师您好,快排这个不太理解,可以分步讲细一下嘛

来源:3-11 快排的时间复杂度及实现思想

雾中天

2022-06-13

老师您好,快排这个不太理解,可以分步讲细一下嘛
写回答

1回答

大周

2022-06-14

核心思想是:

1、从列表中取出任意一个元素,但是我们一般取第一个
2、把这个取出来的元素作为比较的标准
3、把比这个元素小的放在左边
4、把比这个元素大的放在右边

实现的时候,有多种方法,我一直比较喜欢用递归和列表推导式的方法。 你把咱们课程中的代码,加入一些打印的信息,这样就能知道每一步的具体操作了。 

我来加一下,你感受一下,然后如果你想看更具体的信息,你也可以单独加

def quick_sort(quick_list):
    print("现在的列表是:{}".format(quick_list))
    if quick_list == []:
        print("-----寻找结束,此时列表为空-----")
        return []

    first = quick_list[0]
    # 使用列表推导式加上递归实现
    print("开始寻找比第一个元素《《小》》的元素,第一个元素是{}".format(first))
    less = quick_sort([l for l in quick_list[1:] if l <first])
    print("开始寻找比第一个元素《《大》》的元素,第一个元素是{}".format(first))
    more = quick_sort([m for m in quick_list[1:] if m >= first])
    print("*****此时返回的列表是{}*****".format(less + [first] + more))
    return less + [first] + more
print(quick_sort([4,2,56,35,78,46,89,1]))


0
0

一课讲解测试面试 百度资深工程师亲授

为你梳理测试面试技术重难点,掌握一线互联网公司跳槽涨薪技巧。

1322 学习 · 161 问题

查看课程