資料結構 計數排序(鴿巢原理)

2021-10-20 07:38:22 字數 857 閱讀 2832

計數排序又稱為鴿巢原理,是對雜湊直接定址法的變形應用。操作步驟:

//計算範圍

int range = max - min +1;

//建立乙個計數陣列,初始化為0

int* countarr =

(int*)

calloc

(range,

sizeof

(int))

;//計數

for(

int i =

0; i < n; i++

) countarr[arr[i]

- min]++;

//遍歷計數陣列,排序

int idx =0;

for(

int i =

0; i < range; i++)}

}

void

testcountsort()

;int n =

sizeof

(arr)

/sizeof

(arr[0]

);countsort

(arr, n)

;for

(int i =

0; i < n; i++)}

intmain()

資料結構 計數排序

題目來自灰灰考研 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 什麼是計數排序 計數排序是一種非比較性質的排序演算法,元素從未排序狀態變為已排序狀態的過程,是由額外空間的輔助和元素本身的值決定的。計數排序過程中不存在元素之間的比...