資料結構與演算法之計數排序

2021-09-12 21:24:14 字數 376 閱讀 5521

計數排序的基本思想:在乙個陣列中對每個元素按大小進行排名次,乙個元素的名次是陣列中比他小的元素的個數加上左邊出現的與之相等的元素的個數(備註:這裡名次越高說明元素越大)。例如陣列a=[5,4,2,5,8,9],新建乙個相同大小的陣列用於儲存陣列元素的名次,得到名次陣列 r=[2,1,0,3,4,5]。

名次計算c++**

templatevoid rank(t a, int n, int r)

}

利用名次陣列進行排序

templatevoid jishusort(t a,int n,int r)

for(int i=0;idelete temp;

}

資料結構之計數排序

計數排序是一種比較快速的排序方法,相對於氣泡排序 快速排序 堆排序 雞尾酒排序等,計數排序是一種不需要進行元素之間對比的排序演算法,但是該演算法也有一定的侷限性。演算法思路 需要使用乙個計數陣列,將待排序陣列中的每個元素遍歷一遍,將每個元素出現的個數放到計數陣列中,元素的值是多少就在計數陣列相應的下...

資料結構 排序演算法之計數排序與基數排序

一 計數排序 很好理解,就是對應每個數我們統計每個數字出現的次數,然後用乙個直接定址的雜湊表來存放資料,在通過遍歷這個雜湊表,進而就可以排好序了 如下所示 實現如下所示 void countsort int array,int size 開闢輔助空間 int range maxdata mindat...

資料結構與演算法 計數排序

排序的思路常規的就是基於比較,比如常見的快排,冒泡等,這種排序最快也是onlogn。非比較的排序思路基本是用乙個輔助陣列,把待排陣列的元素大小作為索引放入輔助陣列,用輔助陣列的位置來記錄大小,空間換時間。適用場景 待排元素的值有乙個範圍,並且範圍是可以接受的。方法 這裡會涉及幾個引數,作為接受引數,...