計數排序:
n 表示 n個數
k 表示n個數的最大值為k-1
書上用偽**呈現的計數排序是穩定的,但是需要兩個輔助陣列,乙個是n大小,乙個k大小, 習題8-2的e小題需要寫出只用乙個k大小的輔助陣列就可以的計數排序,本以為很簡單,結果想了很久沒想出來,最後還是看了網上的**,真是羞愧,
下面是**
#include#include#include#include "mytimer.h"
#includeusing namespace std;
const int n=100;
int *c=new int[n];
int *b=new int[n];
void countint_sort(int a,int n)
for(int j=0;j!=n;++j)
for(int i=1;i!=n;++i)
for(int j=n-1;j!=-1;--j)
}void countint_sort2(int a,int n)
for(int j=0;j!=n;++j)
for(int i=1;i!=n;++i)
for(int i=0;i!=n;++i)
for(int i=n-1;i!=0;--i)}}
int *a=new int[n];
int main()
for(int i=0;i!=n;++i){
cout<
《演算法導論》筆記 第8章 8 2計數排序
計數排序假設n個輸入元素中的每乙個都是介於0到k之間的整數,此處k為某個整數。當k o n 時,計數排序的執行時間為 n 計數排序是穩定的。void countingsort int a,int b,int n,int k for int j 1 j n j for int i 1 i k i fo...
演算法導論8 2 4習題解答 計數排序
clrs 8.2 4 在o 1 的時間內,回答出輸入的整數中有多少個落在區間 a.b 內。給出的演算法的預處理時間為o n k 演算法思想 利用計數排序,由於在計數排序中有乙個儲存數值個數的臨時儲存區c 0.k 利用這個陣列即可。include iostream using namespace st...
演算法導論 計數排序
不管所堆排序,還是快速排序,排序的本質都所基於各個元素之間的比較。而可以證明的是,所有基於比較的排序演算法,在最壞情況下的時間複雜度的下界是o nlgn 而,計數排序不所基於元素之間的比較,而是,對於乙個輸入x,在整個輸入中確定出小於x的元素個數,這樣就可以把元素x直接放在它在最終輸出陣列中的確定位...