2015-12-08 77 views
1

我有一個整數數組我可以對整數數組進行排序,按差異項排序?

Dim intArray() as integer = {1, 1, 5, 9, 9, 10, 15, 15, 23, 25} 

欲以便與差值此陣列

1-1,9-5,10-9,15-15,25-23 = {0,4 ,1,0,2}的上升再次

訂單:{0,0,1,2,4}

,我想這個結果

intArray = {1, 1, 15, 15, 9, 10, 23, 25, 5, 9} 

感謝

+0

我還沒有任何 –

+0

你試過Array.Sort()嗎? – Yuri

+0

不,因爲這是不容易的方式..也許linq更好.. –

回答

1

這裏是你如何與LINQ做到這一點:

Dim result = intArray _ 
      .Select(Function(x, i) New With {.Value = x, .Index = i}) _ 
      .GroupBy(Function(x) x.Index \ 2) _ 
      .Select(Function(x) x.Select(Function(y) y.Value).ToList()) _ 
      .OrderBy(Function(x) x(1) - x(0)) _ 
      .SelectMany(Function(x) x) _ 
      .ToArray() 

此代碼首先選擇每個元素的值和索引(因爲我們需要的指數,以便能夠組每兩個元素結合在一起) ,然後它將每兩個元素分組在一起,並將它們放入它們自己的列表中(就像我們有一個大小爲二的列表一樣)。然後它通過第二個和第一個值之間的差異來排序這些列表。然後它爲列表清單重新創建一個列表。

+0

非常感謝..這是工作 –