版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
歸并排序算法算法思路:采用遞歸的方式將一串數(shù)組逐級劃分,直至不可分割時,此時順序唯一,將元素放回排序序列中。設(shè)置遞歸函數(shù)(Merge_Sort)那么遞歸中需要進行如下操作:(1)劃分數(shù)組,設(shè)定劃分區(qū)間這里我們向下取整(左序列短于右序列,另一種方式當然也是可以的)設(shè)數(shù)組起點為p,終點為r,則:令:q=(r+p-1)/2;(2)分別處理左右區(qū)間Merge_Sort(array[],p,q);Merge_Sort(array[],q+1,r);(3)合并左右兩個區(qū)間Merge(array[],p,q,r);這里用到了一個歸并操作的函數(shù),我們來簡單分析一下這個函數(shù)中需要處理的任務(wù)。首先:這個函數(shù)需要實現(xiàn)的功能為合并兩個排好順序的數(shù)組,這里簡單說明一下為什么是已經(jīng)排好順序的兩個數(shù)組,我們設(shè)想最簡單的情況,利用Merge_Sort()函數(shù)進行逐級遞歸,當遞歸到左右區(qū)間都只剩一個的情況下,此時再對左右區(qū)間進行遞歸不再處理任何內(nèi)容,此時回到上層遞歸中,這時候函數(shù)就第一次行進到Merge(涵數(shù),此時需要對這兩個都只有一
個數(shù)當然是算是已經(jīng)排好序的數(shù)組進行排序,那么就得到了包含這兩個數(shù)的一個次小有序數(shù)組。按這種邏輯可推知每次執(zhí)行Merge()時,左右兩個數(shù)組都是有序數(shù)組。那么我們在Merge()內(nèi)的任務(wù)就是歸并兩個有序數(shù)組,并且令歸并后的數(shù)組有序。下面用一張圖來說明:假設(shè)我們要排列這樣一個數(shù)組[1,3,7,9,2,4,6,8];從上圖中分析我們可以知道,在函數(shù)中我們需要進行如下處理:(1)劃分數(shù)組,元素個數(shù)分別為:n1=q-p+1;n2=r-q;分別申請兩個動態(tài)數(shù)組L,R需比其中元素個數(shù)多1用于存放一個極大值。分別進行賦值:fromi=0ton1-1L[i]=array[p+i];Fromj=0ton2-1;R[j]=array[q+j+1];L(n1)=inf;R(n2)=inf;I=0;j=0;歸并操作fromk=ptorifL(i)<R(j);array[k]=L[i];i++;elsearray[k]=R[j];j++;代碼實現(xiàn)(C語言):#include<stdio.h>#include<stdlib.h>#defineINF65535voidMerge(intarray[],intp,intq,intr)(intn1=q-p+1;intn2=r-q;inti,j,k;int*L=malloc(sizeof(int)*(n1+1));int*R=malloc(sizeof(int)*(n2+1));for(i=0;i<n1;i++)L[i]=array[p+i];for(j=0;j<n2;j++)R[j]=array[q+j+1];L[n1]=INF;R[n2]=INF;i=0;j=0;for(k=p;k<=r;k++)(if(L[i]<R[j])(array[k]=L[i];i++;)else(array[k]=R[j];j++;)voidMerge_Sort(intarray[],intp,intr)(intq;if(p<r)(q=(r+p-1)/2;Merge_Sort(array,p,q);Merge_Sort(array,q+1,r);Merge(array,p,q,r);))intmain()(inti;intarray[10]=(1,3,7,5,4,2,6,9,5,8);printf("MergeSortExample\n");printf("Beforesort:\n");for(i=0;i<10;i++)printf("%d",array[i]);printf("\n");Merge_Sort(array,0,9);pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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云南玉溪興潔垃圾處理有限公司招聘勞務(wù)派遣駕駛員4人考試參考試題及答案解析
- 2026年合肥財經(jīng)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫有答案解析
- 2026福建宏業(yè)交通服務(wù)有限公司招聘6人考試參考題庫及答案解析
- 2026年1月江蘇省寶應(yīng)中學(xué)招聘教師5人考試參考試題及答案解析
- 2026四川自貢醫(yī)元健康管理有限責任公司招聘工作人員11人考試參考題庫及答案解析
- 2026廣西欽州市人力資源和社會保障局招聘公益性崗位人員2人考試備考試題及答案解析
- 2026江蘇中國藥科大學(xué)智能藥學(xué)交叉研究院工作人員招聘5人考試參考題庫及答案解析
- 2026年昆明市西山區(qū)人民醫(yī)院聘非事業(yè)編制工作人員(4人)考試參考試題及答案解析
- 2026四川綿陽市三臺縣婦幼保健院 招聘編外聘用人員3人(眼科視光師、皮膚科醫(yī)師、外科醫(yī)師)考試備考題庫及答案解析
- 2026中國聯(lián)通上海市分公司校園招聘考試備考試題及答案解析
- 2025-2026學(xué)年遼寧省葫蘆島市連山區(qū)八年級(上)期末數(shù)學(xué)試卷(含答案)
- 《干部履歷表》1999版電子版
- 2023版?zhèn)€人征信模板簡版(可編輯-帶水?。?/a>
- 退役金計算器
- 國開電大本科《人文英語3》機考總題庫
- 北京市建筑垃圾采集報送系統(tǒng)使用說明書
- GB/T 4942-2021旋轉(zhuǎn)電機整體結(jié)構(gòu)的防護等級(IP代碼)分級
- GB/T 32606-2016文具用品中游離甲醛的測定方法乙酰丙酮分光光度法
- GB/T 17897-2016金屬和合金的腐蝕不銹鋼三氯化鐵點腐蝕試驗方法
- 瀝青路面工程檢驗批質(zhì)量驗收記錄
- 中南大學(xué)《管理學(xué)原理》課程試題
評論
0/150
提交評論