如何在给定数组中找到最高、第二高数字、最低第二低数字
谁能告诉我如何如何找到给定数组中的最高、第二高数字、最低第二最低数字
var numbers = new[] {855,3,64,6,24,75,3,6,24,45};
任何指针和建议都会非常有帮助。谢谢
Can anyone Please tell me how to How to find highest ,second highest number, Lowest Second Lowest number in given Array
var numbers = new[] {855,3,64,6,24,75,3,6,24,45};
Any pointer and suggestion would really helpful . Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
您也可以尝试这个 -
希望这有帮助:)
You can also try this -
Hope this is helpful :)
您没有指定复杂性要求:一种方法是按降序对数组进行排序,并选择顶部、第二个和第三个项目。
另一种是构建一个堆,然后执行3次remove root(每次删除后都会重建堆)。
You don't specify the complexity requirement: one way is to sort the array in descending order and pick the top, second and third items.
Another is to build a Heap, and then perform remove root 3 times (with the heap being rebuilt after each remove).
假设数组中至少有 2 个项目,您可以使用
OrderBy()
和ElementAt()
:最高和最低更简单,可以使用
Max()
和Min()
LINQ 方法来完成。如果您担心复杂性,可以使用选择算法< /强>。使用它,您可以执行 O(n) 复杂度的运算。
Assuming you have at least 2 items in the array you can use
OrderBy()
andElementAt()
:Getting the highest and lowest is simpler and can be done using
Max()
andMin()
LINQ methods.If you're worried about complexity, you can achieve better result using Selection algorithm. Using it you can perform the operations in O(n) complexity.
使用 Linq 概念
Using Linq Concepts
为什么可以在中完成两个循环
Why two loops when can be done in
我首先使用选择排序算法按升序排列它们,然后显示值。
I have first arranged them using Selection Sort algorithm in ascending order, then i displayed values.
即使有重复记录,该算法也适用。
使用排序:
并使用 LINQ:
This algorithm is applicable even with duplicate record.
Using Sort:
And using LINQ:
假设您的数组至少有两个成员,这是一个简单的解决方案。
对于数组中的最小数字。
对于数组中第二小的数字。
为数组中的最大数字。
为数组中第二大的数字。
Here is an easy solution assuming you array has at least two members.
For the lowest number in the array.
For second lowest number in the array.
for the highest number in the array.
For the second highest number in the array.
找出最大、第二大、最小和最大的最短方法第二小的数字,使用常规方法:
Shortest way to find out largest, second largest, smallest & second smallest number, using conventional method: