下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第詳解Java之冒泡排序與選擇排序目錄一.冒泡排序1.概念2.圖解3.代碼的思路4.代碼例子二.選擇排序1.概念2.圖解3.代碼的思路總結(jié)
一.冒泡排序
1.概念
冒泡排序這種排序方法其實關(guān)鍵詞就在于冒泡兩個字,顧名思義就是數(shù)字不斷比較然后最大的突出來,也就是說把相鄰的兩個數(shù)字兩兩比較,當一個數(shù)字大于右側(cè)相鄰的數(shù)字時,交換他們的位置,當一個數(shù)字和他右側(cè)的數(shù)字小于或等于的時候,不交換。
2.圖解
關(guān)于冒泡排序我自己畫了一幅圖來描述他的一輪過程
這里我舉了五個無序的數(shù){7,3,6,5,4}
由此可看出他不斷與右側(cè)相鄰的數(shù)字進行比較,當他大于右邊的數(shù)字就交換,否則不交換,就用這種方法不斷進行排序進行很多輪,最后得出一個有序的序列{2,4,5,6,7}。
3.代碼的思路
冒泡循環(huán)是一種有序的序列,有上圖我們不難看出冒泡循環(huán)一輪需要進n-1次比較然后開啟下一層,而且你一輪比較完了之后最后一個最大的數(shù)就不用再參與比較循環(huán)了,所以下一次的循環(huán)可以減少一次。
因此我的思路是利用兩次for循環(huán),一次循環(huán)來當取第二次循環(huán)的次數(shù),然后依次減少第二次for循環(huán)的次數(shù),簡便了很多過程,然后數(shù)組兩個相鄰的數(shù)字進行依次比較,大于右邊的也就是大于下一位的交換位置,否則不交換,所以我的兩個for循環(huán)的代碼如下(其實這也算是個萬能代碼,就冒泡循環(huán)這一塊)當然i,k,b都需要來定義的,n為比較序列中元素個數(shù)。
這個代碼也用了兩次for循環(huán)所以我們不難推算出時間復雜度為o(n^2)
for(i=0;ii++)
for(k=0;kn-1-i;k++)
{if(a[k]a[k+1])
{b=a[k];
a[k]=a[k+1];
a[k+1]=b;
}//交換a[k]與a[k+1]位置
}
4.代碼例子
我自己也寫了一個代碼,輸入a[10]序列的數(shù)字,然后冒泡循環(huán)進行排序來實現(xiàn)
#includestdio.h
intmain()
inta[10],i,j,b,k;
for(i=0;ii++)
printf("輸入第%d個數(shù)為:",i+1);
scanf_s("%d",a[i]);
for(k=0;kk++)//外部循環(huán)
for(i=0;i9-k;i++)//內(nèi)部循環(huán)
if(a[i]a[i+1])//
b=a[i];
a[i]=a[i+1];
a[i+1]=b;
printf("排出序列為:");
for(i=0;ii++)
printf("%d",a[i]);
return0;
}
最后運行也是成功的
二.選擇排序
選擇循環(huán)的主要是選擇,選擇一個元素去進行比較,假如這個數(shù)比他小,換成嘞個數(shù)繼續(xù)比較,最后找出最小值與數(shù)組第一位的數(shù)進行交換。然后一直這樣循環(huán)下去,直到代碼排序完成。也就是通過一個中間量從帶排序的的數(shù)中找出最大或最小的交換到對應位置。
關(guān)于選擇排序我自己花了一幅圖來描述他的一輪比較
我用了五個無序數(shù)來做例子{2,1,4,-3,3}
由此可以看出選擇比較的過程,這里我用指針代指了需要的中間量,剛開始指針指向2,然后2去比較,12,所以指針指向較小值,指針指向1,最后就這樣找出-3為最小值和第一個交換,得到第一輪循環(huán)比較的數(shù)列{-3,1,4,2,3}。
3.代碼的思路
其實觀察上圖一輪循環(huán)次數(shù)還有循環(huán)完一輪之后,不需要用最小值比較可以看出其實他和冒泡循環(huán)有點相似,都是循環(huán)一輪需要進n-1次比較然后開啟下一層,而且下一次循環(huán)可以減少一次。
所以我的思路是,依然運用兩次for循環(huán),與冒泡循環(huán)不同的是我需要一個中間商,所以我可以引用一個局部變量來幫助我,這個局部變量就是圖解的指針,局部變量就是數(shù)組對應元素的位置,不斷進行比較,當他小于一個數(shù)時,他就等于嘞個數(shù)的位置數(shù),繼續(xù)比較,直到循環(huán)結(jié)束找出最小值,最小值跟第一位換位置,一次循環(huán)直到排出有序序列為止。所以代碼如下
for(i=o;in-1:i++)//循環(huán)數(shù)列取得數(shù)開始依次比較
intx=i;//x為中間商
for(k=i+1;kk++)//從循環(huán)數(shù)列取得數(shù)后一位開始循環(huán)數(shù)列取得數(shù)進行依次比較
if(a[x]a[k])//得出最小值
k=x;
if(x!=i)//將得到的最小值跟最前面的數(shù)字進行交換
{t=a[i];
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026江西省歐潭人力資源集團有限公司招聘見習生3人筆試參考題庫及答案解析
- 2026上半年貴州事業(yè)單位聯(lián)考赫章縣招聘153人筆試備考試題及答案解析
- 2026年工程地質(zhì)勘察中的質(zhì)量保證措施
- 2026年土地利用中的地質(zhì)災害防范策略
- 2025年少先隊提前入隊筆試題及答案
- 2025年廣東廣業(yè)投資集團筆試及答案
- 2026新興際華集團所屬中新聯(lián)公司招聘事業(yè)部總經(jīng)理副總經(jīng)理筆試模擬試題及答案解析
- 2025年材料類事業(yè)單位考試真題及答案
- 2026年臨界含水率對土壤材料的影響
- 2026四川能投綜合能源有限責任公司員工招聘19人筆試備考試題及答案解析
- 2026年及未來5年中國TFT液晶面板行業(yè)市場發(fā)展數(shù)據(jù)監(jiān)測及投資方向研究報告
- 大唐集團機考行測題庫
- 車輛日常安全檢查課件
- 民航安全法律法規(guī)課件
- 山東省濟寧市2026屆第一學期高三質(zhì)量檢測期末考試濟寧一模英語(含答案)
- 光伏電站巡檢培訓課件
- 中建建筑電氣系統(tǒng)調(diào)試指導手冊
- 年末節(jié)前安全教育培訓
- 安全生產(chǎn)麻痹思想僥幸心理
- GB/T 93-2025緊固件彈簧墊圈標準型
- 建設工程測繪驗線標準報告模板
評論
0/150
提交評論