排序演算法總結(二)

2021-06-05 19:22:34 字數 1510 閱讀 3828

歸併排序:

歸併(merge)排序法是將兩個(或兩個以上)有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。我們一般取中位數,將前後兩部分排序在歸併為乙個序列,遞迴完成。

#include using namespace std;

void merge(int a,int low,int mid, int high)

if(a[i] > a[j])

}if(i <= mid)

}if(j <= high)

}for(int n = 0;n<6;n++)

a[n] = b[n];

return;

}void mergesort(int a,int low,int high)

return;

}int main()

; mergesort(a,0,5);

for(int i = 0;i<6;i++)

cout《氣泡排序:

依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。

#include using namespace std;

void bubblesort(int a,int n)}}

return;

}int main()

; bubblesort(a,7);

for(int i=0;i<7;i++)

cout《選擇排序:

每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

#include using namespace std;

void selectsort(int a,int n)

if(min != i)

}return;

}int main()

; selectsort(a,5);

for(int i= 0;i<5;i++)

cout<希爾排序:

先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後,取第二個增量d2

#include using namespace std;

void shellsort(int a,int n,int x)//一趟增量為x

{ int i,j;

for(i = x;i0 && temp

排序演算法總結(二)

歸併排序演算法思想是分而治之。下面將對分而治之演算法排序做乙個簡單描述。歸併排序之分而治之 void sort e,n else 對e插入排序 當k 2的時候,分而治之的排序演算法稱之為歸併排序,嚴格的來說是二路歸併排序,它的空間複雜度是o n 時間複雜度為o nlogn 歸併排序函式用乙個陣列a來...

排序演算法總結 二

排序演算法是一種基本並且常用的演算法。由於實際工作中處理的數量巨大,所以排序演算法對演算法本身的速度要求很高。而一般我們所謂的演算法的效能主要是指演算法的複雜度,一般用o方法來表示。在後面我將給出詳細的說明。對於排序的演算法我想先做一點簡單的介紹,也是給這篇文章理乙個提綱。我將按照演算法的複雜度,從...

排序演算法 總結 思考(二)

寫排序演算法總是計算機招聘筆試面試必考,也最檢驗考基礎能力的題 續前一篇介紹其他四種排序演算法 5.輪輪選拔 氣泡排序 bubble sort 氣泡排序也是原理比較好懂,但是實現效率不高的排序方法之一,比較適合初學者熟悉理解演算法的過程 冒泡 本身就是乙個很形象的比喻。在此排序演算法中,每一輪會前後...