四 歸併排序 非比較排序 歸併排序 計數排序

2021-09-27 01:56:33 字數 1349 閱讀 9904

基本思想:

歸併排序(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...