3

配列があります

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であるため

この番号を並べ替えるにはどうすればよいですか。何か案が?

4

3 に答える 3

4
var result = array.OrderBy(i => Math.Abs(i - value))
             .ThenBy(i => i < value)
             .ToArray();
于 2012-04-12T20:56:15.960 に答える
2
int nearbyNumber = 8;
var query = array.OrderBy(number => Math.Abs(number - nearbyNumber ));

ToArray本当に配列が必要な場合は呼び出すことができます。

本当に配列をその場でソートしたい場合は、カスタムComparerオブジェクトを作成して使用できますがArray.Sort、それはもっと手間がかかります...

于 2012-04-12T20:56:24.493 に答える
1
var array = new int[] { 6, 4, 10, 7, 7, 9 };
int target = 8;
var values = array.OrderBy(i => Math.Abs(i - target)).ToArray();

編集私はこの答えを非常に速く持っていました、そしてそれからそれは人間であるかどうかを尋ねるいくつかのキャプチャで私を止めました。どうもありがとうございました!:)

于 2012-04-12T20:58:14.747 に答える