求解:1万个unsigned int 的整数排序(只遍历一遍,sizeof(unsigned int)=...
发布网友
发布时间:2022-05-30 00:38
我来回答
共2个回答
热心网友
时间:2024-04-06 17:59
#include <stdio.h>
#define SIZE 10000 /* 10000 unsigned int */
#define MAX 65535 /* sizeof(unsigned int)==2),最大整数是65535 */
unsigned int b[MAX+1]={0}; /* 先清零 */
void main()
{
unsigned int i,j,a[SIZE];
for(i=0;i<SIZE;i++)
scanf("%ud",&a[i]); /* 输入1万个unsigned int */
for(i=0;i<SIZE;i++)
b[a[i]]++; /* 记录相同整数的个数,如有3个a[i]值是23,23,23,则b[23]=3 */
for(i=0;i<=MAX;i++) /* 整数从小到大输出 */
{
for(j=0;j<b[i];j++) /* 输出整数值是i的次数 */
printf("%u ",i);
}
}
热心网友
时间:2024-04-06 18:02
如果你的“只遍历一遍”只限定与对于原数据的遍历的话:
那么你可以使用 用平衡树优化过后的二叉排序树做这道题
当二叉排序树生成完后,再对二叉排序树进行先根或后根遍历即可
望提问者采纳...