版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
5.3.2選擇排序第一次排序第二次排序第三次排序第四次排序任務(wù)完成!選擇排序的基本思想是第一次從待排序的數(shù)據(jù)元素中選出最?。ɑ蜃畲螅┑囊粋€(gè)元素,存放在序列的起始位置,然后從剩余的未排序元素中找到最?。ù螅┰?,然后放到已排序的序列的末尾。以此類推,直到全部待排序的數(shù)據(jù)元素的個(gè)數(shù)為零。在參加排序數(shù)組的所有元素中找出最?。ɑ蜃畲螅?shù)據(jù)的元素,使它與第一個(gè)元素中的數(shù)據(jù)交換位置,然后在余下的元素中找出最小(或最大)數(shù)據(jù)的元素,與第二個(gè)元素中的數(shù)據(jù)交換位置。以此類推,直到所有元素成為一個(gè)有序的序列。以四個(gè)數(shù)據(jù)21,99,16,67為例,升序(從小到大)選擇排序的過程如圖所示:21991667原始數(shù)據(jù)123421991667第1次比較j=2k=1比較后,k=121991667第2次比較k=1j=3比較后,k=321991667第3次比較k=3j=4比較后,k=3并交換選擇排序第一遍排序16992167第一遍排序后的結(jié)果123416992167第1次比較k=2j=3比較后,k=3第2次比較16992167k=3j=4比較后,k=3并交換選擇排序第二遍排序162199671234第二遍排序后的結(jié)果第1次比較16219967k=3j=4比較后,k=3并交換選擇排序第三遍排序162167991234第三遍排序后的結(jié)果數(shù)據(jù)已經(jīng)有序,完成排序!選擇排序算法對(duì)規(guī)模為n的數(shù)據(jù)進(jìn)行排序,總共需要進(jìn)行n-1遍加工。
在選擇排序的每一遍操作中,最多需要進(jìn)行一次交換,當(dāng)某一遍的最?。ɑ蜃畲螅?shù)據(jù)元素的位置就在排序數(shù)組最前面時(shí),不需要進(jìn)行交換。即最壞情況下需要交換n-1次,最好情況下(排序元素已經(jīng)有序)需要交換0次。選擇排序的程序?qū)崿F(xiàn)如下:a=[12,25,33,10,15]n=len(a)foriinrange(n-1):min_idx=i#記錄最小值的索引forjinrange(i+1,n):ifa[j]<a[min_idx]:min_idx=j#更新索引ifmin_idx!=i:#判斷是否需要交換位置a[min_idx],a[i]=a[i],a[min_idx]print(a)選擇排序的遷移應(yīng)用一a=[12,25,33,10,15]n=len(a)foriinrange(n-1):min_idx=i#記錄最小值的索引forjinrange(n-1,i,-1):ifa[j]<a[min_idx]:min_idx=j#更新索引ifmin_idx!=i:#判斷是否需要交換位置a[min_idx],a[i]=a[i],a[min_idx]print(a)遷移原理:將比較的順序修改為從后往前,每一遍循環(huán)中變量min_idx還是在記錄排序范圍中最小數(shù)據(jù)的元素索引。選擇排序的優(yōu)化在數(shù)組的所有元素中同時(shí)找出最小的元素和最大的元素,然后將這兩個(gè)元素分別與第一個(gè)和最后一個(gè)元素交換,在余下的元素中再找出最小和最大數(shù)據(jù)的元素,分別與第二個(gè)和倒數(shù)第二個(gè)元素交換,依次類推,直到所有元素的數(shù)據(jù)按升序排列,這就是選擇排序的優(yōu)化。代碼如下:a=[31,69,55,23,18,57,90,82,97,27]n=len(a)p=0q=9whilep<=q:iMin=piMax=pforiinrange(p+1,q+1):ifa[i]<a[iMin]:iMin=iifa[i]>a[iMax]:iMax=ia[iMin],a[p]=a[p],a[iMin]ifiMax==p:iMax=iMina[iMax],a[q]=a[q],a[iMax]p=p+1q=q-1print(a)
優(yōu)化原理:從兩端往中間同時(shí)進(jìn)行,一端從小到大排,一端從大到小排,變量p和q表示本次排序的范圍(p前和q后的數(shù)據(jù)已經(jīng)完成排序)。for語(yǔ)句找出本次排序的最小數(shù)組元素a[iMin]和最大數(shù)組元素a[iMax],然后將a[iMin]與a[p]交換,將a[iMax]與a[q]交換。冒泡排序選擇排序選擇排序算法原理一邊比較,一邊交換先選出最大值或最小值的索引,再交換先選出最大值或最小值的索引,再交換核心代碼foriinrange(1,n):forjinrange(n-1,i-1,-1):ifa[j]<a[j-1]:a[j],a[j-1]=a[j-1],a[j]foriinrange(1,n):k=i-1forjinrange(i,n):ifa[j]<a[k]:k=jifk!=i-1:
a[i-1],a[k]=a[k],a[i-1]foriinrange(1,n):k=i-1forjinrange(i,n):ifa[j]<a[k]:k=jifk!=i-1:
a[i-1],a[k]=a[k],a[i-1]相同點(diǎn)①n個(gè)數(shù)都需要n-1遍排序,其中變量i控制排序的遍數(shù);②比較的次數(shù)一樣多,都是n*(n-1)/2;③最好的情況下,交換的次數(shù)一樣,都是0不同點(diǎn)邊比較邊交換,最壞的情況下交換的次數(shù)是n*(n-1)/2先選擇再交換,最壞的情況下交換的次數(shù)是n-1如何區(qū)分因?yàn)槭沁叡容^邊交換,所以交換的代碼是在內(nèi)層循環(huán)里面的因?yàn)槭窍冗x出最大值或最小值再交換,所以交換的代碼在內(nèi)層循環(huán)的外面練一練1.有如下Python程序段:a=[52,36,68,79,27]n=len(a)b=0c=0foriinrange(n-1):k=iforjinrange(i+1,n):ifa[j]<a[k]:k=jb=b+1ifk!=i:a[i],a[k]=a[k],a[i]c=c+1print(b,c)該程序段執(zhí)行后,b和c的值分別為()A.53B.44C.43D.34C2.某排序算法的Python程序段如下:a=[18,12,11,21,13]n=len(a)f=[False]*5#含有5個(gè)元素,且初始值為False的列表foriinrange(n):k=iforjinrange(n-1,i,-1):ifa[j]<a[
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年份餐飲廢棄物處理承包協(xié)議3篇
- 2025版挖掘機(jī)械銷售代理合同模板
- 二零二五年度哺乳期離婚雙方子女保險(xiǎn)權(quán)益轉(zhuǎn)移協(xié)議2篇
- 2024證券公司與其合作方之間國(guó)際證券交易合同
- 二零二五版領(lǐng)養(yǎng)未成年人監(jiān)護(hù)責(zé)任協(xié)議參考4篇
- 二零二五版園林景觀木工施工合作協(xié)議4篇
- 二零二五版合伙房產(chǎn)買賣合同及配套裝修設(shè)計(jì)服務(wù)6篇
- 2025年度特種運(yùn)輸服務(wù)買賣合同安全與時(shí)效承諾
- 2025版彩禮退還與婚姻解除條件及財(cái)產(chǎn)分割協(xié)議書范本3篇
- 基于2025年度規(guī)劃的文化園區(qū)停車場(chǎng)建設(shè)與運(yùn)營(yíng)合同3篇
- 柴油墊資合同模板
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- 城市作戰(zhàn)案例研究報(bào)告
- 【正版授權(quán)】 ISO 12803:1997 EN Representative sampling of plutonium nitrate solutions for determination of plutonium concentration
- 道德經(jīng)全文及注釋
- 2024中考考前地理沖刺卷及答案(含答題卡)
- 多子女贍養(yǎng)老人協(xié)議書范文
- 安踏運(yùn)動(dòng)品牌營(yíng)銷策略研究
- 彩票市場(chǎng)銷售計(jì)劃書
- 骨科抗菌藥物應(yīng)用分析報(bào)告
- 支付行業(yè)反洗錢與反恐怖融資
評(píng)論
0/150
提交評(píng)論