| 
 | 
 
 
发表于 2019-10-6 11:46:23
|
显示全部楼层
 
 
 
      直接遍历array[],记录元素个数存至c[],再循环输出效率会比较慢吗? 
- #include<stdio.h>
 
  
- #define MAX 1024
 
 - void counting_sort( int array[],int length);
 
 - void counting_sort( int array[],int length)
 
 - {
 
 -     int t,n=0,j=0,i=0;
 
 -     int c[MAX]={0};
 
 -   
 
 -     for( j=0;j<length;j++ )
 
 -     {
 
 -          t = array[j];
 
 -          c[t] +=1;//直接记录array[]中某元素个数
 
 -     }
 
  
-     while( n<length )
 
 -     {
 
 -         if( temp[i] != 0 )//按从小到大顺序输出array[]中元素
 
 -         {
 
 -             for( j=1; j<=temp[i]; j++ )
 
 -             {
 
 -                 printf("%d ",i);
 
 -                 n += 1;
 
 -             }
 
 -         }
 
 -         i++;
 
 -     }
 
  
 
- }
 
 - int main(void)
 
 - {
 
 -     int i,length;
 
 -     int array[]={42,2,98,76,345,26,54,61,19,84};
 
 -     length = sizeof(array)/sizeof(array[0]);
 
  
-     printf("original array is :\n");
 
 -     for( i=0;i<length;i++)
 
 -     {
 
 -         printf("%d ",array[i]);
 
 -     }
 
 -     putchar('\n');
 
  
-     printf("after sorting is :\n");
 
 -     counting_sort(array,length);
 
 -     putchar('\n');
 
  
-     return 0;
 
 - }
 
 
  复制代码 |   
 
 
 
 |