一,计数排序

计数排序

 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. #include <stdio.h>  
  2. void COUNTINGSORT(int *A, int *B, int array_size, int k)  
  3. {  
  4.         int C[k+1], i, value, pos;  
  5.         for(i=0; i<=k; i++)  
  6.         {  
  7.             C[i] = 0;  
  8.         }  
  9.         for(i=0; i< array_size; i++)  
  10.         {  
  11.             C[A[i]] ++;  
  12.         }  
  13.         for(i=1; i<=k; i++)  
  14.         {  
  15.             C[i] = C[i] + C[i-1];  
  16.         }  
  17.         for(i=array_size-1; i>=0; i--)  
  18.         {  
  19.             value = A[i];  
  20.             pos = C[value];  
  21.             B[pos-1] = value;  
  22.             C[value]--;  
  23.         }  
  24. }  
  25.          
  26. int main()  
  27. {  
  28.         int A[8] = {2, 5, 3, 0, 2, 3, 0, 3}, B[8], i;  
  29.         COUNTINGSORT(A, B, 8, 5);  
  30.         for (i=0; i<= 7; i++)  
  31.         {  
  32.             printf("%d ", B[i]);  
  33.         }  
  34.         printf("\n");  
  35.         return 0;  
  36. }  


适用范围:待排序的数最大值和最小值之差大小有限。

posted on 2015-01-20 20:06  知了112  阅读(151)  评论(0编辑  收藏  举报