您好,登錄后才能下訂單哦!
這篇文章主要介紹了python中5個常見的排序算法分別是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
1、插入排序:每步將一個待排序的記錄,按其關鍵碼值的大小插入前面已經排序的文件中適當位置上,直到全部插入完為止。
代碼如下:
#L=[5,2,3,1,6,9] # def insert_sort(list): # leng=len(list);//求list長度 # for i in range(1,leng): # temp=list[i];//設置哨兵 # j=i; # while(j>0 and list[j-1]>temp): # list[j]=list[j-1];//大的元素后移 # j=j-1; # list[j]=temp;//遇到比哨兵小的元素,將其設置為哨兵 # return list; # print(insert_sort(L))
2、冒泡排序:比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到
結尾的最后一對。在這一點,最后的元素應該會是最大的數。針對所有的元素重復以上的步驟,除了最后一個。持續每次對越來
越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
代碼如下:
# def bubble_sort(list): # leng=len(list); # for i in range(0,leng)://控制趟數 # flag=True # for j in range(1,leng-i): # if list[j-1]>list[j]: # flag=False; # list[j-1],list[j]=list[j],list[j-1];//交換這兩個數 # if flag: # break # return list; # L=[9,5,6,8,4,2] # print(bubble_sort(L))
3、選擇排序:它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全
部待排序的數據元素排完。 選擇排序是不穩定的排序方法(比如序列[5, 5, 3]第一次就將第一個[5]與[3]交換,導致第一個5挪動到第二個5后面)。
代碼如下:
# def select_sort(list): # leng=len(list) # for i in range(0,leng): # min=i //設置哨兵,假設第一個元素是最小的 # for j in range(i+1,leng): # if list[j]<list[i]: # min=j //開始尋找比哨兵小的元素。如果小則將重新設置哨兵位置 # if min!=i: # list[i],list[min]=list[min],list[i]#交換這兩個數 # return list # L=[-4,1,2,5,3,-2]
4、快速排序:它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的
所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
代碼如下:
# def partition(list,low,high)://劃分算法 # key=list[low] # while(low<high): # while(low<high and list[high]>=key):high=high-1 # if low<high: # list[low]=list[high] # low=low+1 # while(low<high and list[low]<=key):low=low+1 # if low<high: # list[high]=list[low] # high=high-1 # list[low]=key # return low # # def quick_sort(list,low,high)://快速排序算法 # if low<high: # pos=partition(list,low,high) # quick_sort(list,low,pos-1) # quick_sort(list,pos+1,high) # return list # L=[45,12,-32,65,28,9,-75,34] # print(quick_sort(L,0,len(L)-1))
5、堆排序:堆排序(Heapsort)是指利用堆積樹(堆)這種數據結構所設計的一種排序算法,它是選擇排序的一種。
代碼如下:
#堆排序 # def HeapAdjust(list,pos,len)://調整堆算法 # lchild=2*pos+1 # rchild=2*pos+2 # min=pos # if pos<(len-1)/2: # if lchild<len and list[lchild]<list[min]: # min=lchild; # if rchild<len and list[rchild]<list[min]: # min=rchild; # if min!=pos: # list[pos],list[min]=list[pos],list[min] # HeapAdjust(list,min,len) # return list # # def BuildHeap(list,len)://建堆算法 # i=len/2-1 # while(i>=0): # HeapAdjust(list,i,len) # i=i-1 # return list # # def Heap_sort(list,len)://堆排序算法 # BuildHeap(list,len) # while(len): # list[0],list[len-1]=list[len-1],list[0] # len=len-1 # HeapAdjust(list,len,0) # return list # # L=[45,12,-32,65,28,9,-75,34] # print(Heap_sort(L,len(L)))
感謝你能夠認真閱讀完這篇文章,希望小編分享python中5個常見的排序算法分別是什么內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。