# 在当前数组上排序
def quick_sort(number, i, j):
if i >= j:
return
k1, k2 = i, j
n = number[i]
while i < j:
while i < j and number[j] >= n:
j -= 1
number[i] = number[j]
while i < j and n >= number[i]:
i += 1
number[j] = number[i]
number[j] = n
quick_sort(number, k1, i-1)
quick_sort(number, i + 1, k2)
# 不改变原数组使用新数组排序
def quick_sort2(s):
if len(s) <= 1:
return s
n = s[0]
left, right = [], []
for i in s[1:]:
left.append(i) if i < n else right.append(i)
return quick_sort2(left) + [n] + quick_sort2(right)
s = [1, 45, 3, 889, 343, 12, 34, 5, 654, 243]
# quick_sort(s, 0, len(s) - 1)
s = quick_sort2(s)
print(s)
网友评论