使用数组对最近的数字进行排序

时间:2012-04-12 20:52:25

标签: c# arrays sorting

有一个数组

int[] array = new int[]{6,4,10,7,7,9};

和8号。

我想用最接近的数字对数组进行排序。

最近的数字:分别为9,7,7,10,6,4

因为9-1 = 8,7 + 1 = 8,7 + 1 = 8,10-2 = 8,6 + 2 = 8,4 + 4 = 8

我该如何对这些数字进行排序。 任何想法?

3 个答案:

答案 0 :(得分:4)

var result = array.OrderBy(i => Math.Abs(i - value))
             .ThenBy(i => i < value)
             .ToArray();

答案 1 :(得分:2)

int nearbyNumber = 8;
var query = array.OrderBy(number => Math.Abs(number - nearbyNumber ));

如果您确实需要阵列,可以致电ToArray

如果你真的想要对数组进行排序,你可以创建一个自定义的Comparer对象并使用Array.Sort,但这还有更多工作......

答案 2 :(得分:1)

var array = new int[] { 6, 4, 10, 7, 7, 9 };
int target = 8;
var values = array.OrderBy(i => Math.Abs(i - target)).ToArray();

编辑我的答案非常快,然后我用一些验证码询问是否是人类来阻止我。非常感谢! :)