八大排序算法總結參考模板_第1頁
八大排序算法總結參考模板_第2頁
八大排序算法總結參考模板_第3頁
八大排序算法總結參考模板_第4頁
八大排序算法總結參考模板_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、插入排序1.直接插入排序原理:將數(shù)組分為無序區(qū)和有序區(qū)兩個區(qū),然后不斷將無序區(qū)的第一個元素按大小順序插入到有序區(qū)中去,最終將所有無序區(qū)元素都移動到有序區(qū)完成排序。要點:設立哨兵,作為臨時存儲和判斷數(shù)組邊界之用。實現(xiàn):Void InsertSort(Node L,int length)Int i,j;/分別為有序區(qū)和無序區(qū)指針for(i=1;i<length;i+)/逐步擴大有序區(qū)j=i+1;if(Lj<Li)L0=Lj;/存儲待排序元素While(L0<Li)/查找在有序區(qū)中的插入位置,同時移動元素Li+1=Li;/移動i-;/查找Li

2、+1=L0;/將元素插入i=j-1;/還原有序區(qū)指針2.希爾排序原理:又稱增量縮小排序。先將序列按增量劃分為元素個數(shù)相同的若干組,使用直接插入排序法進行排序,然后不斷縮小增量直至為1,最后使用直接插入排序完成排序。要點:增量的選擇以及排序最終以1為增量進行排序結束。實現(xiàn):Void shellSort(Node L,int d)While(d>=1)/直到增量縮小為1Shell(L,d);1 / 6d=d/2;/縮小增量Void Shell(Node L,int d)Int i,j;For(i=d+1;i<leng

3、th;i+)if(Li<Li-d)L0=Li;j=i-d;While(j>0&&Lj>L0)Lj+d=Lj;/移動j=j-d;/查找Lj+d=L0;交換排序1.冒泡排序原理:將序列劃分為無序和有序區(qū),不斷通過交換較大元素至無序區(qū)尾完成排序。要點:設計交換判斷條件,提前結束以排好序的序列循環(huán)。實現(xiàn):Void BubbleSort(Node L)Int i ,j;Bool ischanged;/設計跳出條件For(j=n;j<0;j-)ischanged =false;For(i=0;i<j;

4、i+)If(Li>Li+1)/如果發(fā)現(xiàn)較重元素就向后移動Int temp=Li;Li=Li+1;Li+1=temp;Ischanged =true;If(!ischanged)/若沒有移動則說明序列已經(jīng)有序,直接跳出Break;2.快速排序原理:不斷尋找一個序列的中點,然后對中點左右的序列遞歸的進行排序,直至全部序列排序完成,使用了分治的思想。要點:遞歸、分治實現(xiàn):選擇排序1.直接選擇排序原理:將序列劃分為無序和有序區(qū),尋找無序區(qū)中的最小值和無序區(qū)的首元素交換,有序區(qū)擴大一個,循環(huán)最終完成全部排序。要點:實現(xiàn):Void SelectSort(Node

5、0;L)Int i,j,k;/分別為有序區(qū),無序區(qū),無序區(qū)最小元素指針For(i=0;i<length;i+)k=i;For(j=i+1;j<length;j+)If(Lj<Lk)k=j;If(k!=i)/若發(fā)現(xiàn)最小元素,則移動到有序區(qū)Int temp=Lk;Lk=Li;Li=Ltemp; 2.堆排序原理:利用大根堆或小根堆思想,首先建立堆,然后將堆首與堆尾交換,堆尾之后為有序區(qū)。要點:建堆、交換、調(diào)整堆實現(xiàn):Void HeapSort(Node L)BuildingHeap(L);/建堆(大根堆)For(int i

6、=n;i>0;i-)/交換Int temp=Li;Li=L0;L0=temp;Heapify(L,0,i);/調(diào)整堆Void BuildingHeap(Node L) For(i=length/2 -1;i>0;i-)Heapify(L,i,length);歸并排序原理:將原序列劃分為有序的兩個序列,然后利用歸并算法進行合并,合并之后即為有序序列。要點:歸并、分治實現(xiàn):Void MergeSort(Node L,int m,int n)Int k;If(m<n)K=(m+n)/

7、2;MergeSort(L,m,k);MergeSort(L,k+1,n);Merge(L,m,k,n);基數(shù)排序原理:將數(shù)字按位數(shù)劃分出n個關鍵字,每次針對一個關鍵字進行排序,然后針對排序后的序列進行下一個關鍵字的排序,循環(huán)至所有關鍵字都使用過則排序完成。要點:對關鍵字的選取,元素分配收集。實現(xiàn):Void RadixSort(Node L,length,maxradix)Int m,n,k,lsp;k=1;m=1;Int temp10length-1;Empty(temp); /清空臨時空間While(k<maxradix) /遍歷所有關鍵字For(int i=0;i<length;i+) /分配過

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論