|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def q(a):
- if len(a) < 2:
- return a
- else:
- less = []
- high = []
- dump = a[0]
- for i in range(1, len(a)):
- if (a[i] <= dump):
- less.append(a[i])
- else:
- high.append(a[i])
- # less = [i for i in a[1:] if i <= dump]
- # high = [i for i in a[1:] if i > dump]
- return q(less) + [dump] + q(high)
- a = [1, 32, 23, 46, 15, 6, 72]
- print(q(a))
复制代码
注释的地方是《算法图解》里的代码,但是我觉得没必要遍历两次
本帖最后由 Stubborn 于 2021-4-4 11:04 编辑
原来上来说 O 和 2O的时间效率都等于O 。
还有一个小建议:
for i in range(1, len(a)):
变为,可以减少每次运行len的时间
N = len(a)
for i in range(1, N):
|
|