第一次用python写快排···感觉不是很熟,还是要多练QAQ
import random
def quickSort(array,lo,hi):#左闭右bi
# print(array)
# print("lo:"+str(lo))
# print("hi:"+str(hi))
if lo>hi:
return
seed=array[lo]#选取标准位
l=lo
h=hi
while(l<h):
while(l<h and array[h]>=seed):#从右向左寻找第一个比标准位小的
h=h-1
while(l<h and array[l]<=seed):#从左向右寻找第一个比标准位大的
l=l+1
if(l<h):#交换两者位置,并继续进行循环
tmp=array[l]
array[l]=array[h]
array[h]=tmp
continue
# print("l:"+str(l))
# print("h:"+str(h))
#将标准位换到分界线处
array[lo]=array[l]
array[l]=seed
quickSort(array,lo,l-1)#递归,闭区间,因此不需要再搜标准位了
quickSort(array,l+1,hi)
return
#arr=[3,1,2,5,4]
#quickSort(arr,0,len(arr)-1)
#print(arr)
def quickSortRandom(array,lo,hi):#和上一个函数相比,增加了随机数
if lo>hi:
return
s=random.randint(lo,hi)
# print(str(lo)+" "+str(hi)+" "+str(s))
tmp=array[lo]
array[lo]=array[s]
array[s]=tmp
seed=array[lo]
l=lo
h=hi
while(l<h):
while(l<h and array[h]>=seed):
h=h-1
while(l<h and array[l]<=seed):
l=l+1
if(l<h):
tmp=array[l]
array[l]=array[h]
array[h]=tmp
continue
array[lo]=array[l]
array[l]=seed
quickSortRandom(array,lo,l-1)
quickSortRandom(array,l+1,hi)
return
N=int(input())
array = list(map(int, input().split()))
#array=input()
#array=array.split(' ')
#print("length of array is "+str(len(array)))
for i in range(0,N):
#array.append(int(strarray[i]))
array[i]=int(array[i])
quickSort(array,0,len(array)-1)
for i in range(0,N):
print(str(array[i])+" ",end="")
# print("in quickSort....."+str(len(array)))