python中5個(gè)常見的排序算法分別是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹了python中5個(gè)常見的排序算法分別是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)從2013年成立,先為喀什等服務(wù)建站,喀什等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為喀什企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

1、插入排序:每步將一個(gè)待排序的記錄,按其關(guān)鍵碼值的大小插入前面已經(jīng)排序的文件中適當(dāng)位置上,直到全部插入完為止。

代碼如下:

#L=[5,2,3,1,6,9]
# def insert_sort(list):
# leng=len(list);//求list長(zhǎng)度
# for i in range(1,leng):
# temp=list[i];//設(shè)置哨兵
# j=i;
# while(j>0 and list[j-1]>temp):
# list[j]=list[j-1];//大的元素后移
# j=j-1;
# list[j]=temp;//遇到比哨兵小的元素,將其設(shè)置為哨兵
# return list;
# print(insert_sort(L))

2、冒泡排序:比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。對(duì)每一對(duì)相鄰元素做同樣的工作,從開始第一對(duì)到

 結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是較大的數(shù)。針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。持續(xù)每次對(duì)越來(lái)

越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。

代碼如下:

# def bubble_sort(list):
# leng=len(list);
# for i in range(0,leng)://控制趟數(shù)
# 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];//交換這兩個(gè)數(shù)
# if flag:
# break
# return list;
# L=[9,5,6,8,4,2]
# print(bubble_sort(L))

3、選擇排序:它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最?。ɑ蜉^大)的一個(gè)元素,存放在序列的起始位置,直到全

部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法(比如序列[5, 5, 3]第一次就將第一個(gè)[5]與[3]交換,導(dǎo)致第一個(gè)5挪動(dòng)到第二個(gè)5后面)。

代碼如下:

# def select_sort(list):
# leng=len(list)
# for i in range(0,leng):
# min=i //設(shè)置哨兵,假設(shè)第一個(gè)元素是最小的
# for j in range(i+1,leng):
# if list[j]<list[i]:
# min=j //開始尋找比哨兵小的元素。如果小則將重新設(shè)置哨兵位置
# if min!=i:
# list[i],list[min]=list[min],list[i]#交換這兩個(gè)數(shù)
# return list
# L=[-4,1,2,5,3,-2]

4、快速排序:它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的

所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。

代碼如下:

# 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)是指利用堆積樹(堆)這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法,它是選擇排序的一種。

代碼如下:

#堆排序
# def HeapAdjust(list,pos,len)://調(diào)整堆算法
# 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)))

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python中5個(gè)常見的排序算法分別是什么內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

當(dāng)前標(biāo)題:python中5個(gè)常見的排序算法分別是什么-創(chuàng)新互聯(lián)
分享路徑:http://www.bm7419.com/article4/cdjioe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、面包屑導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、ChatGPT、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)