这是牛客网上的一道题!
一个数组有 N 个元素,使用快速排序对其进行排序输出(本题还会人工阅卷,请使用快速排序算法进行排序)
输入描述:
输入为两行。 第一行一个整数n(1 ≤ n ≤ 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。
输出描述:
输出一行,即排序之后的数组,以空格分隔,行末无空格
示例1:
输入
10
293 108 161 783 376 265 330 598 646 812
输出
108 161 265 293 330 376 598 646 783 812
def quick_sort(alist,first, last):
if first>=last:
return
mid_value = alist[first]
low = first
high = last
while low < high:
# 左移
while low < high and mid_value <= alist[high]:
high -= 1
alist[low] = alist[high]
# 右移
while low < high and mid_value > alist[low]:
low += 1
alist[high]=alist[low]
alist[low] = mid_value
quick_sort(alist,first, low - 1)
quick_sort(alist,low + 1, last)
n = int(input())
li = input().split(' ')
alist=[int(x) for x in li]
quick_sort(alist,0,n-1)
print(' '.join(str(i) for i in alist))