边看CLRS边写
从这学期中开始看CLRS,总得写点什么,这一篇把书中的一些算法用python实现一下,加深一点印象。
持续写下去,应该会有好长一篇吧。
先是普通版快排
1 # -*- coding: utf-8 -*- 2 3 ####quick-sort##### 4 5 def PARTITION(A,b,e): 6 i=j=b 7 while j<e: 8 if A[j]<A[e]: 9 temp = A[j] 10 A[j] = A[i] 11 A[i] = temp 12 i+=1 13 j+=1 14 temp = A[e] 15 A[e] = A[i] 16 A[i] = temp 17 return i 18 def QUICK_SORT(A,b,e): 19 if b<e: 20 q = PARTITION(A,b,e) 21 QUICK_SORT(A,b,q-1) 22 QUICK_SORT(A,q+1,e) 23 pass 24 if __name__ == '__main__': 25 A=[2,3,21,432,54,1,23,453,45,1,22,2,563,787,-90,45,3,78,7483,32,12,3,2,222,-123] 26 QUICK_SORT(A,0,A.__len__()-1) 27 print A
然后 是插入排序
1 ####insert-sort### 2 def swap(A,a,b): 3 temp = A[b] 4 A[b] = A[a] 5 A[a] = temp 6 7 def INSERT_SORT(A,b,e): 8 i = b 9 while i<=e: 10 key = A[i] 11 j=i-1 12 i+=1 13 while j>=b and key<A[j]: 14 swap(A,j+1,j) 15 j-=1 16 17 if __name__ == '__main__': 18 A=[2,3,21,432,54,1,23,453,45,1,22,2,563,787,-90,45,3,78,7483,32,12,3,2,222,-123] 19 INSERT_SORT(A,0,A.__len__()-1) 20 print A
浙公网安备 33010602011771号