演算法 排序 計數排序

2022-07-31 03:33:18 字數 879 閱讀 2302

計數排序的核心思想就是將需要排序的陣列的元素轉為下標,在輔助空間陣列(輔助空間陣列的初始都是0)中找到對應元素的下標位置,將該位置的元素++,掃瞄下標,將對應不為0的下標記錄賦值給原陣列,然後對應下標元素--

圖例分析:

具體**:

#includevoid countsort(int *a,int

len);

int maxa(int *a,int

len);

intmain()

while((ch=getchar()!='\n'

)); countsort(a,len);

//呼叫計數排序

for(i=0; i)

return0;

}void countsort(int *a,int

len)

;

//迴圈遍歷(在a中遍歷)將a的元素對應給help的下標位置++,help[a[i]++]

for(i=0; i)

//掃瞄輔助陣列help,如果對應的值不為0的情況下,就將下標賦值給原本的陣列

for(j=0; j1; j++)

//如果help[j]是等於0的情況就說明原本的陣列沒有這個元素,直接可以不管

} }//

找出陣列中的最大值

int maxa(int *a,int

len)

}return

max;

}

結果演示:

方法總結:時間效率高,速度快,但是當數的範圍很大的時候回導致輔助空間也很大,不過在1000以內還是可以忍受的。

演算法 排序 計數排序

計數排序不是基於比較的排序演算法,其核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數。計數排序 counting sort 是一種穩定的排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於i...

計數排序演算法

countsort.c include include include typedef int datatype typedef char numtype 有效個數 2至127 2 sizeof numtype 8 1 1 define limit numtype 1 sizeof numtype ...

計數排序演算法

計數排序利用空間換取時間,實現了時間複雜度為o n k k表示待排序列的最大值 的高效排序,在一定範圍數值的排序中,比快速排序 堆排序更快。1.只適用於對整數排序。因為計數排序需要通過下標確定整數在新陣列中的下標,如果不為整數,那麼下標也就無法確定 2.待排序列在一定的取值範圍內。利用已有陣列構造額...