def quick_sort(li,l,r):
if l>=r:
return
i=l-1
j=r+1
x=li[ l+r >>1]
while i[HTML_REMOVED]x:
j-=1
if i<j:
li[i],li[j]=li[j],li[i]
quick_sort(li,l,j)
quick_sort(li,j+1,r)
n=int(input(“”))
li=list(map(int,input().split()))
quick_sort(li,0,n-1)
print(” “.join(map(str,li))
思路:
1.设置基准值
2.调整基准值位置(边界)
3.递归处理左右两边
最后一轮循环中两个 do−while循环条件都不成立
当最后i和j两个相邻的指针交换时必定会有一个会是基准值,另一个可能与基准值相同或大于或小于,调整后使其满足li[i]<=x和li[j]>=x,最终目的是调整基准值并划分两个区域