常用排序选择排序,冒泡排序,希尔排序,快速排序,插入排序的python的实现,python的代码量比c/c++少了不少。
1 def select_sort(sort_array): 2 for i,elem in enumerate(sort_array): 3 for j,elem in enumerate(sort_array[i:]): 4 if sort_array[i]>sort_array[j+i]: 5 sort_array[i],sort_array[j+i]=sort_array[j+i],sort_array[i] 6 7 def bubble_sort(sort_array): 8 for i,elem in enumerate(sort_array): 9 for j,elem in enumerate(sort_array[:len(sort_array)-i-1]): 10 if sort_array[j]>sort_array[j+1]: 11 sort_array[j],sort_array[j+1]=sort_array[j+1],sort_array[j] 12 13 def insert_sort(sort_array): 14 for i,elem in enumerate(sort_array): 15 for j,elem in enumerate(sort_array[:i]): 16 if sort_array[j]>sort_array[i]: 17 sort_array.insert(j,sort_array[i]) 18 del sort_array[i+1] 19 20 def quick_sort(sort_array): 21 if(len(sort_array)<2): 22 return 23 24 left=[x for x in sort_array[1:]if x<sort_array[0]] 25 right=[x for x in sort_array[1:]if x>=sort_array[0]] 26 quick_sort(left) 27 quick_sort(right) 28 29 sort_array[:]=left+[sort_array[0]]+right 30 31 def shell_sort(sort_array): 32 dist=len(sort_array)/2; 33 34 while(dist>0): 35 for i in range(dist,len(sort_array)): 36 tmp=sort_array[i] 37 j=i 38 while(j>=dist and sort_array[j]<sort_array[j-dist]): 39 sort_array[j],sort_array[j-dist]=sort_array[j-dist],sort_array[j] 40 j-=dist 41 dist/=2 42 43 def algo_sort_test(sort_array,sort_func): 44 sort_func(sort_array) 45 46 if __name__=='__main__': 47 array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23] 48 algo_sort_test(array,bubble_sort) 49 print array 50 array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23] 51 algo_sort_test(array,insert_sort) 52 print array 53 array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23] 54 algo_sort_test(array,quick_sort) 55 print array 56 array=[1,2,3,5,-4,4,10,3,19,13,16,18,5,190,456,23] 57 algo_sort_test(array,shell_sort) 58 print array