|
发表于 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;
- }
复制代码 |
|