2015-12-08 81 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

非常感谢..这是工作 –