C语言数组找大小

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:16:00
如果只是单纯的找出一个数组中最大或者最小的数,就需要两个for循环遍历一次就可以了

如果想要找出前N个最小的数该怎么做呢?在不排序的情况下……,最优化运行最快的算法是什么呢?

谢谢
我想用冒泡法排序来找自然是会找到,可是要遍历好多遍啊!而且还要排序……可事实我要做的只是找到前N个最小的数……就想着排序有点浪费资源哦,有没有更优化的方法呢?

/.\额~~~我果然很笨蛋~~怎么没想到没想到没想到……碎碎念

规定好排序的最大次数就好了
规定到N就好了嘛,排了前N个就停止

干嘛要两个for循环,一遍就够了啊 。。
或者你建一个堆啊。就好了复杂度是lgn

冒泡算法。把小的数放到底部,达到N个数时退出。

可以不用排序呀,直接遍历一次就行了:
max=0;
for(i=0;i<n;i++)
if(a[i]>max)
max=a[i];
当然这个效率也是线型的,如果要想做到对数级效率,可以考虑一下堆排序或者生成树