直接遍历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;
}
|