各個(gè)排序算法及其代碼.doc

各個(gè)排序算法及其代碼.doc

ID:50835931

大?。?4.50 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2020-03-15

各個(gè)排序算法及其代碼.doc_第1頁(yè)
各個(gè)排序算法及其代碼.doc_第2頁(yè)
各個(gè)排序算法及其代碼.doc_第3頁(yè)
各個(gè)排序算法及其代碼.doc_第4頁(yè)
各個(gè)排序算法及其代碼.doc_第5頁(yè)
資源描述:

《各個(gè)排序算法及其代碼.doc》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、常見(jiàn)排序算法的實(shí)現(xiàn)(一)→插入排序插入排序是最簡(jiǎn)單最直觀(guān)的排序算法了,它的依據(jù)是:遍歷到第N個(gè)元素的時(shí)候前面的N-1個(gè)元素已經(jīng)是排序好的了,那么就查找前面的N-1個(gè)元素把這第N個(gè)元素放在合適的位置,如此下去直到遍歷完序列的元素為止?! ∷惴ǖ膹?fù)雜度也是簡(jiǎn)單的,排序第一個(gè)需要1的復(fù)雜度,排序第二個(gè)需要2的復(fù)雜度,因此整個(gè)的復(fù)雜度就是  1+2+3+……+N=O(N^2)的復(fù)雜度。[詳細(xì)內(nèi)容]voidinsert_sort(ints[],intn){inti,j,temp;for(i=1;i

2、s[i];j=i-1;while(j>=0&&s[j]>temp){s[j+1]=s[j];j--;}s[j+1]=temp;}}常見(jiàn)排序算法的實(shí)現(xiàn)(二)→shell排序shell排序是對(duì)插入排序的一個(gè)改裝,它每次排序把序列的元素按照某個(gè)增量分成幾個(gè)子序列,對(duì)這幾個(gè)子序列進(jìn)行插入排序,然后不斷縮小增量擴(kuò)大每個(gè)子序列的元素?cái)?shù)量,直到增量為一的時(shí)候子序列就和原先的待排列序列一樣了,此時(shí)只需要做少量的比較和移動(dòng)就可以完成對(duì)序列的排序了。[詳細(xì)內(nèi)容]voidshell_sort(ints[],intn){//希爾intd

3、=0;inti,j,temp;for(d=n/2;d>=1;d/=2){for(i=d;i=0&&s[j]>temp){s[j+d]=s[j];j=j-d;}s[j+d]=temp;}}}常見(jiàn)排序算法的實(shí)現(xiàn)(四)→冒泡排序冒泡排序算法的思想:很簡(jiǎn)單,每次遍歷完序列都把最大(小)的元素放在最前面,然后再對(duì)剩下的序列從父前面的一個(gè)過(guò)程,每次遍歷完之后待排序序列就少一個(gè)元素,當(dāng)待排序序列減小為只有一個(gè)元素的時(shí)候排序就結(jié)束了。因此,復(fù)雜度在最壞的情況下是O(

4、N^2)。voidbubble_sort(ints[],intn){inti,j;inttemp;boolflag;for(i=n-1;i>=1;i--){flag=true;for(j=0;js[j+1]){temp=s[j];s[j]=s[j+1];s[j+1]=temp;flag=false;}}if(flag==true)break;}}常見(jiàn)排序算法的實(shí)現(xiàn)(五)→快速排序快速排序的算法思想:選定一個(gè)樞紐元素,對(duì)待排序序列進(jìn)行分割,分割之后的序列一個(gè)部分小于樞紐元素,一個(gè)部分

5、大于樞紐元素,再對(duì)這兩個(gè)分割好的子序列進(jìn)行上述的過(guò)程。?//對(duì)一個(gè)給定范圍的子序列選定一個(gè)樞紐元素,執(zhí)行完函數(shù)之后返回分割元素所在的位置,//在分割元素之前的元素都小于樞紐元素,在它后面的元素都大于這個(gè)元素intpartition(ints[],intlow,inthigh){inttemp;intpivo=s[low];while(low=pivo){high--;}-----à此處可以加if(low

6、]=s[low];s[low]=temp;while(low

7、的算法思想:把待排序序列分成相同大小的兩個(gè)部分,依次對(duì)這兩部分進(jìn)行歸并排序,完畢之后再按照順序進(jìn)行合并。voidmerge(ints[],intlow,intm,inthigh){inti,j,k=0;intt[100];for(i=low,j=m+1;i<=m&&j<=high;){if(s[i]<=s[j]){t[k++]=s[i++];}else{t[k++]=s[j++];}}while(i<=m)t[k++]=s[i++];while(j<=high)t[k++]=s[j++];for(i=low,j=

8、0;j

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。