如何识别和定位数组中的大值?

时间:2010-12-23 10:28:56

标签: c

array[10]={2,3424,4234,42,234,234,23423,123,342,3}

在此数组中,如何找到第一个五个最大数字以及这些数字的位置?我希望输出为

  

最大数字是23423,其位置是7

对于五个最大的数字及其位置,就像这个^^^。

我想要代码;我是学生。

3 个答案:

答案 0 :(得分:6)

阵列是否保证有10个元素?他们保证是积极的吗?如果是这样,你可以将每个元素乘以10并将索引添加到它,然后对数组进行排序,然后取5个最大的元素;除以10(整数除法)得到原始数字,取%10得到原始位置。

对于更通用的解决方案,您可以创建一个结构来保存值和原始索引,然后根据值对结构数组进行排序。

使用任何基本排序算法。

答案 1 :(得分:0)

您只需将搜索算法扩展为最大数字,即可搜索n = 5个最大数字。 如果你使用二进制搜索,首先应该用数组做什么?好吧,如果你回答这个问题,你可能根本不需要二元搜索它;)

答案 2 :(得分:0)

据我所知,数组应该是不可变的,因为你也想找到这些位置。所以,如果我是正确的,你不应该对数组进行排序,除非你使用一个大小为10的新数组,在那里存储已排序的数组,并在两个数组之间进行比较和查找等。

如果你想在没有排序的情况下找到它,你可以这样做:

找出第一大数字及其位置 找到第二大数字(比第一大数字更小)及其位置 找到第三大数字(小于第二大数字)......

等...

这可以做到而且并不难。