标签:
__author__ = ‘student‘ ‘‘‘ quicksort step 1, choose one pivot, such as pivot=la[0] step 2, scan the data from right side, find data less than pivot, then swap this with pivot pivot=1 [4] 5 7 3 20 9 [j] then scan from left side, find data greater than pivot, then swap the position j and i 4 [] 7 3 20 9 5 when i>=j then finish one loop. then put the pivot in the i; all data are dived by pivot now. left is less than pivot and right are greater than pivot. think step by step then do it and try something step 3. then you have two parts to sort, left part and right part. recursive call this method to sort ‘‘‘ import random def quicksort(la,l,r): if l>=r : return left=l;right=r pivot=la[left] while left < right: while left<right and la[right]>pivot: right-=1 if left<right : la[left]=la[right] left+=1 while left<right and la[left]<pivot: left+=1 if left<right: la[right]=la[left] la[left]=pivot quicksort(la,l,left-1) quicksort(la,left+1,r) def quicksort2(la): if len(la)<=1: return la return quicksort2([lt for lt in la[1:] if lt<la[0]])+ la[0:1]+quicksort2([ge for ge in la[1:] if ge>=la[0]]) import sys sys.setrecursionlimit(999) la=[] def generatenumbers(la,len): for x in range(len): la.extend([random.randint(1,50)]) generatenumbers(la,1000) print la quicksort(la,0,len(la)-1) print la
标签:
原文地址:http://www.cnblogs.com/huaxiaoyao/p/4489805.html