用Python實現常見的排序
阿新 • • 發佈:2018-11-11
氣泡排序
def bubble_sort(alist): n=len(alist) for j in range(n-1): for i in range(0,n-1-j): if alist[i]>alist[i+1]: alist[i],alist[i+1]=alist[i+1],alist[i] if __name__=="__main__": li=[54,26,93,17,77,31,44,55] print(li) bubble_sort(li) print(li)
歸併排序
import time def merge_sort(alist): start=time.clock() n=len(alist) if(n<=1): return alist; mid=n//2 left_list=merge_sort(alist[:mid]) right_list=merge_sort(alist[mid:]) left_pointer,right_pointer=0,0 result=[] while(left_pointer<len(left_list) and right_pointer<len(right_list)): if(right_list[right_pointer]<left_list[left_pointer]): result.append(right_list[right_pointer]) right_pointer+=1 else: result.append(left_list[left_pointer]) left_pointer+=1 result+=left_list[left_pointer:] result+=right_list[right_pointer:] end=time.clock() print(end-start) return result if __name__=="__main__": list=[54,26,93,17,77,31,44,55,20] print(list) sorted_alist=merge_sort(list) print(sorted_alist)
插入排序
def insert_sort(alist): n=len(alist) for j in range(1,n): i=j while i>0: if alist[i]<alist[i-1]: alist[i],alist[i-1]=alist[i-1],alist[i] i-=1 else: break if __name__=="__main__": li=[54,26,93,17,77,31,44,55] print(li) insert_sort(li) print(li)
還有其他排序方法再更新