有一个数组
int[] array = new int[]{6,4,10,7,7,9};还有一个数字8。
我想按最接近的数字对数组进行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
如何对这些数字进行排序。有什么想法吗?
发布于 2012-04-13 04:56:16
var result = array.OrderBy(i => Math.Abs(i - value))
.ThenBy(i => i < value)
.ToArray();发布于 2012-04-13 04:56:24
int nearbyNumber = 8;
var query = array.OrderBy(number => Math.Abs(number - nearbyNumber ));如果确实需要数组,可以调用ToArray。
如果你真的想在原地对数组进行排序,你可以创建一个自定义的比较器对象并使用Array.Sort,但这是更多的工作……
发布于 2012-04-13 04:58:15
var array = new int[] { 6, 4, 10, 7, 7, 9 };
int target = 8;
var values = array.OrderBy(i => Math.Abs(i - target)).ToArray();编辑我很快就有了答案,然后一些验证码问我是不是人类,这让我停了下来。非常感谢!:)
https://stackoverflow.com/questions/10131641
复制相似问题