[求助]初学者的一道题
任意输入100个数,从中挑选出10个最小数,并将这些数转换为16进制和2进制。怎样做呢?要将100个数先排序吗?那如果是1000个数或者更多的话,运算起来是不是很麻烦呢?
求高人指教,并给出正确答案,谢谢!!! 这种一般都要排序的,先用一个冒泡法排序从小到大拍,然后前十个就是了。进制转换就不用说了吧。
冒泡法:
int *p,*q, a[],m;
p=a;
for(int i=0;i<N;i++)
{
if(*p>*q)
{
m=*p;
*p=*q;
*q=m;
}
p++;
q=p++;
}
冒泡法大概就是这个样子的,很就没看书了,自己想的,可能跟书上的有点不一样,但意思应该是一样的。不信就拿我这个跟你老师去对一下。 用冒泡的排序
太慢了
可以采用树的结构
效率快很多! 数字低于5000个,用冒泡足够了
我记得冒泡法是这样的
int i,j,a[100],n,t;for(i=1;i<=n-1;i++)
{for(j=i+1;j<=n;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;
} 找出n个数中前k个小(大)数,我想到最快的算法是nlogk的.
我想你大概猜出来了吧,好吧,那我就不说了
页:
[1]
