資料結構 九 計數排序

2021-08-15 10:00:07 字數 861 閱讀 2100

1、演算法流程

(1)求取待排序陣列a

的最大值

max;

(2)建立乙個新的陣列c[max+1],

用於統計陣列

a中的每個元素

a,小於等於

a的個數。

(3)根據小於等於a

的個數,來確定排序後,

a在排序陣列中的位置,進行位置填充;

2、**實現

寫**需要注意事項:

(1)計數統計結束後,我們根據c[a]

的大小填充元素

a,每填充一次c[a]要減去1

,這樣是為了保證重複資料可以正常填充;

(2)填充如果是要穩定排序,那麼需要使用反向填充的方案;

int * count_sort(int *data,int length)

//統計每個數值計數

int *count=new int[max+1]();

for (int i = 0; i//從左往右,統計小於data[i]的數值個數

for (int i = 1; i <=max ; ++i)

int *sort_data=new int[length]();

for (int i = 0; idelete count;

return sort_data;

}int test_sort() ;

//非比較排序演算法

int * sort_data=count_sort(data,10);

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

deletesort_data;

return 0;

}

資料結構 計數排序

題目來自灰灰考研 counting sort基本思想 對於給定的輸入序列中的每乙個元素x,確定該序列中值小於x的元素的個數 一旦有了這個資訊,就可以將x直接存放到最終的輸出序列的正確位置上。它建立乙個長度為這個資料範圍的陣列c,c中每個元素記錄要排序陣列中對應記錄的出現個數。下面以示例來說明這個演算...

資料結構 計數排序

計數排序基於桶排序。比如待排陣列 a 5 那麼就需要建造 105 max 100 min 1 6 大小的臨時陣列,將這 5 個元素按照,值減 100 min 作為下標儲存在臨時陣列中。如下圖所示 計數排序 param a paramn private static void jishu int a,...

資料結構 計數排序

之前講到的插入 希爾 選擇 堆 冒泡 快速 歸併排序都屬於比較排序 涉及到兩個數的比較 接下來要講到一種非比較排序演算法 計數排序。1 什麼是計數排序 計數排序是一種非比較性質的排序演算法,元素從未排序狀態變為已排序狀態的過程,是由額外空間的輔助和元素本身的值決定的。計數排序過程中不存在元素之間的比...