




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第python數(shù)據(jù)結(jié)構(gòu)的排序算法(1)算法思想
第1趟,在待排序記錄r1~r[n]中選出最小的記錄,將它與r1交換;第2趟,在待排序記錄r2~r[n]中選出最小的記錄,將它與r2交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢
(2)python實(shí)現(xiàn)代碼
defselect_sort(slist):
foriinrange(len(slist)-1):
x=i
forjinrange(i,len(slist)):
ifslist[j]slist[x]:
x=j
slist[i],slist[x]=slist[x],slist[i]
returnslist
2、堆排序(利用最大堆和最小堆的特性)
(1)算法思想
它是選擇排序的一種。可以利用數(shù)組的特點(diǎn)快速定位指定索引的元素。堆分為大根堆和小根堆,是完全二叉樹。大根堆的要求是每個(gè)節(jié)點(diǎn)的值都不大于其父節(jié)點(diǎn)的值。在數(shù)組的非降序排序中,需要使用的就是大根堆,因?yàn)楦鶕?jù)大根堆的要求可知,最大的值一定在堆頂
(2)python實(shí)現(xiàn)代碼
importmath
defheap_sort(a):
al=len(a)
defheapify(a,i):
left=2*i+1
right=2*i+2
largest=i
ifleftalanda[left]a[largest]:
largest=left
ifrightalanda[right]a[largest]:
largest=right
iflargest!=i:
a[i],a[largest]=a[largest],a[i]
heapify(a,largest)
#建堆
foriinrange(math.floor(len(a)/2),-1,-1):
heapify(a,i)
#不斷調(diào)整堆:根與最后一個(gè)元素
foriinrange(len(a)-1,0,-1):
a[0],a[i]=a[i],a[0]
al-=1
heapify(a,0)
returna
四、歸并排序
(1)算法思想
采用分治法(DivideandConquer)的一個(gè)非常典型的應(yīng)用。將已有序的子序列合并,得到完全有序的序列;即先使每個(gè)子序列有序,再使子序列段間有序。若將兩個(gè)有序表合并成一個(gè)有序表,稱為二路歸并
(2)python實(shí)現(xiàn)代碼
defmerge_sort(a):
if(len(a)2):
returna
middle=len(a)//2
left,right=a[0:middle],a[middle:]
returnmerge(merge_sort(left),merge_sort(right))
defmerge(left,right):
result=[]
whileleftandright:
ifleft[0]=right[0]:
result.append(left.pop(0));
else:
result.append(right.pop(0));
whileleft:
result.append(left.pop(0));
whileright:
result.append(right.pop(0));
returnresult
五、其他排序
1、計(jì)數(shù)排序(字典計(jì)數(shù)-還原)
(1)算法思想
計(jì)數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉(zhuǎn)化為鍵存儲(chǔ)在額外開辟的數(shù)組空間中。作為一種線性時(shí)間復(fù)雜度的排序,計(jì)數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
(2)python實(shí)現(xiàn)代碼
defcountingSort(arr,maxValue):
bucketLen=maxValue+1
bucket=[0]*bucketLen
sortedIndex=0
arrLen=len(arr)
foriinrange(arrLen):
ifnotbucket[arr[i]]:
bucket[arr[i]]=0
bucket[arr[i]]+=1
forjinrange(bucketLen):
whilebucket[j]0:
arr[sortedIndex]=j
sortedIndex+=1
bucket[j]-=1
returnarr
2、桶排序(鏈表)
(1)算法思想
為了節(jié)省空間和時(shí)間,我們需要指定要排序的數(shù)據(jù)中最小以及最大的數(shù)字的值。將數(shù)組分到有限數(shù)量的桶子里。每個(gè)桶子再個(gè)別排序(有可能再使用別的排序算法或是以遞歸方式繼續(xù)使用桶排序進(jìn)行排序)
(2)python實(shí)現(xiàn)代碼
defbucketSort(nums):
bucket=[0]*(max(nums)-min(nums)+1)
foriinrange(len(nums)):
bucket[nums[i]-min(nums)]+=1
tmp=[]
foriinrange(len(bucket)):
ifbucket[i]!=0:
tmp+=[min(nums)+i]*bucket[i]
returntmp
3、基數(shù)排序
(1)算法思想
基數(shù)排序?qū)?shù)據(jù)按位進(jìn)行分桶,然后將桶中的數(shù)據(jù)合并。每次分桶只關(guān)注其中一位數(shù)據(jù),其他位的數(shù)據(jù)不管,最大的數(shù)據(jù)有多少位,就進(jìn)行多少次分桶和合并。由于整數(shù)也可以表達(dá)字符串(比如名字或日期)和特定格式的浮點(diǎn)數(shù),所以基數(shù)排序也不是只能使用于整數(shù)。
(2)python實(shí)現(xiàn)代碼
defradix_sort(array):
bucket,digit=[[]],0
whilelen(bucket[0])!=len(array):
bucket=[[],[],[],[],[],[],[],[],[],[]]
foriinrange(len(array)):
num=(array[i]//10**digit)%10
bucket[num].append(array[i])
array.cle
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)管理理論知識(shí)考試試題及答案
- 清華大學(xué)信息部java面試題及答案
- 環(huán)境工程原理與技術(shù)研究試題
- 設(shè)備故障預(yù)防技術(shù)試題及答案
- 西方政治制度中的女性角色試題及答案
- 軟件設(shè)計(jì)師新手必看試題及答案
- 西方國家的環(huán)保政策與國際合作試題及答案
- 客戶參與在項(xiàng)目管理中的重要性試題及答案
- 機(jī)電工程的職業(yè)生涯管理策略試題及答案
- 軟件設(shè)計(jì)師考試工作坊分享試題及答案
- 皮下注射技術(shù)
- 全套教學(xué)課件《工程倫理學(xué)》
- 擔(dān)保合同范本
- 中職英語1 基礎(chǔ)模塊 Unit 3 shopping
- 廣東省廣州三校2023-2024學(xué)年高二下學(xué)期期末考試+政治試卷(含答案)
- 藥政與藥品生產(chǎn)質(zhì)量管理智慧樹知到答案2024年青島科技大學(xué)
- 《動(dòng)量定理》參考課件 04
- 人教版高中數(shù)學(xué)A版 必修第1冊(cè)《第二章 一元二次函數(shù)、方程和不等式》大單元整體教學(xué)設(shè)計(jì)
- 臺(tái)球室用工合同范本
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年四年級(jí)下學(xué)期期末數(shù)學(xué)試卷
- 教科版六年級(jí)下冊(cè)科學(xué)期末測(cè)試卷附完整答案(各地真題)
評(píng)論
0/150
提交評(píng)論