快速排序-python
最近在自学python,于是想从数据结构入手。无聊用python写了递归的快速排序。果然不是很熟练,写了很久才没报错,当是复习快排了,hh..
代码如下
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。1 import random 2 3 def aswap(lis,a,b): 4 tmp=lis[a] 5 lis[a]=lis[b] 6 lis[b]=tmp 7 return 8 9 def QuickSort(array,left,right): 10 if left>=right: 11 return 12 divide=qSort(array,left,right) 13 QuickSort(array,left,divide-1) 14 QuickSort(array,divide+1,right) 15 return 16 17 18 19 def qSort(array,left,right): 20 mid=(left+right)//2 21 tmp=array[mid] 22 aswap(array,right,mid) 23 mid=right 24 while left<right: 25 while left<right: 26 if tmp>array[left]: 27 left+=1 28 else: 29 break 30 if(left<right): 31 array[mid]=array[left] 32 mid=left 33 right+=-1 34 while left<right: 35 if tmp<array[right]: 36 right+=-1 37 else: break 38 if(left<right): 39 array[mid]=array[right] 40 mid=right 41 left+=1 42 array[mid]=tmp 43 return mid 44 45 # def qSort(array,left,right): 46 # mid=(left+right)//2 47 # tmp=array[mid] 48 # aswap(array,right,mid) 49 # b=left 50 # for n in range(left,right): 51 # if(tmp>array[n]): 52 # aswap(array,n,b) 53 # b+=1 54 # aswap(array,b,right) 55 # return b 56 57 import time 58 if __name__=='__main__': 59 arr=[] 60 max=int(1e4) 61 for i in range(max): 62 arr.append(random.randint(0,max)) 63 time1=time.thread_time() 64 QuickSort(arr,0,len(arr)-1) 65 time2=time.thread_time() 66 print(time2-time1) 67
名字起的很随意,不是很规范,注释里是另外一种写法...但好像没有看着复杂的速度快
更多精彩