常用排序的python实现

常用排序选择排序,冒泡排序,希尔排序,快速排序,插入排序的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        

 

posted @ 2013-05-30 10:19  lkprof  阅读(178)  评论(0编辑  收藏  举报