如何排序数字

时间:2010-04-20 07:44:57

标签: c# sorting

我需要一些帮助才能处理以下逻辑。该程序获得许多整数输入,如10,16,3,17,21,29,6

要完成的逻辑:

情景1:

首先选择最大的4个输入数字16,17,21,29。现在将值分配给A,B,C和D:

  • A =所选4
  • 中的最小值
  • B =所选4中最大的
  • C = 选定的4
  • 中的第二小
  • D =所选的第三小 4

要显示的结果:

A = 16
B = 29
C = 17
D = 21

场景:2

如果用户提供3个输入,例如3,6,10,则仅分配给A,B,C,并且应忽略D

要显示的结果:

A = 3
B = 10
C = 6

4 个答案:

答案 0 :(得分:1)

我会接受输入并将它们存储到List中。然后我会对此列表进行排序。 一旦排序,您可以根据需要提取数字。

答案 1 :(得分:1)

逻辑:

  1. 按降序排序
  2. 选择前4个元素
  3. 根据您在A,B,C,D中的要求分配值

答案 2 :(得分:1)

假设您在数组中有输入值,可以使用静态Array.Sort()方法对其进行排序,然后通过索引选择顶部/底部(例如。values[value.Length - 1]获取最高值) 。确保做一些边界检查以避免运行时异常,并正确解决分配的“方案2”。

如果你想要更现代的东西,你也可以使用一些LINQ魔法来获得前4项:

values = values.OrderByDescending(i => i).Take(4).ToArray();

四个最高值现在位于highOnes,您可以按照自己喜欢的顺序打印。再一次,确保做一些边界检查 - 数组中可能少于四个数字。

答案 3 :(得分:1)

听起来这可能是一项任务,所以我会给你这些提示:

如果您在数组中包含所有这些数字,则可以尝试对数组进行部分排序。编写一个简单的冒泡排序,并将最大数字排序到前面。但是,不是对整个数组进行排序,而是在将4个最大的元素带到数组的前面之后使其停止。

这样,你的第一个元素将是你最大的,依此类推。从那里,您可以轻松完成其他所需的事情。

希望有所帮助。

相关问题