基本思想:
歸併排序(merge-sort)是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有 序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。 歸併排序核心步驟:
看下圖:
歸併排序實現**如下:
#include#include//歸併排序
void merge(int* a,int low,int mid,int high)
while(left_low<=left_high)
tmp[k++]=a[left_low++];
while(right_low<=right_high)
tmp[k++]=a[right_low++];
for(int i=0;i
free(tmp);
} void merge_sort(int* a,int first,int last)
}
思想:計數排序又稱為鴿巢原理,是對雜湊直接定址法的變形應用。 操作步驟:
統計相同元素出現次數
根據統計的結果將序列**到原來的序列中
詳細解析請看下面的**(引用別人的圖,講的很詳細):
實現**如下:
//計數排序
void getcount(int* a,int n)
} int range = max-min +1; //範圍 最大值--最小值
int* tmp =(int*) malloc(sizeof(int)*range);
memset(tmp,0,sizeof(int)*range);
for(int i=0;i計數排序的特性總結:
計數排序在資料範圍集中時,效率很高,但是適用範圍及場景有限。
時間複雜度:o(max(n,範圍))
空間複雜度:o(範圍)
穩定性:穩定
關於其它型別的排序請大家看我之前的部落格:
一、排序 ----- 插入排序(直接插入排序、希爾排序)
二、選擇排序(直接選擇排序、堆排序)
三、 交換排序 (氣泡排序,快速排序)
非比較排序 歸併排序
一 歸併排序的思想 歸併排序利用了分冶的思想,將一塊待排序的區間,取中間位置,分成兩段區間 然後通過不斷的遞迴,直到每段區間只有乙個數字,這時我們就認為該段區間有序,然後將這相鄰的兩段有序區間合併為乙個有序區間 這樣通過遞迴先 陣列,然後再合併陣列,就完成了歸併排序 二 實現 include inc...
歸併排序(2 路歸併排序)
遞迴寫法 include define maxn 100 void merge int a,int l1,int r1,int l2,int r2 將陣列a的區間 l1,r1 和區間 l2,r2 合併為乙個有序區間 else while i r1 while j r2 for int i 0 i非遞...
python歸併排序 python 歸併排序
排序思路 1.將陣列分成兩組a,b,建立臨時陣列 c,c長度 a b 2.i,j分別屬於a,b 3.若a i b j 將b j 放入c,j 否則 a i 放入c,i 4.迴圈3步驟,將a或b中剩餘的元素放入c,再將c複製到陣列中 5.遞迴3 4直到a,b序列的長度 1 歸併排序 class merg...