2009-04-28 47 views
0

我需要获取包含原始数组的反向替代元素的数组。以更简单的方式获得结果

例如:包含元素{12,56,67}的数组。

我需要得到含有{67,12} 的阵列(阵列反转得到{67,56,12},则采取备用元件手段{67,12})

我需要在做这个C#

+0

这是HW问题? – 2009-04-28 09:22:07

+0

我们可以,但你不应该自己做功课吗? – 2009-04-28 09:22:47

+0

我需要一个替代路这就是为什么。 – peter 2009-04-28 09:30:45

回答

2

如果您使用C#3,试试这个:

int[] array = {1,2,3,4,5,6}; 
var x = array.Reverse().Where((n,i) => i % 2 !=0); 

哪里是形成所谓的LINQ语言功能的一部分的扩展方法(在C#3.0新)。它根据谓词过滤一个序列。在上面的示例中,n是序列的元素,i是序列中元素的从零开始的索引。两者都是强类型的。谓词i%2!= 0表示元素的索引不能直接被2整除,所以我们所说的是反转列表并从中选择奇数元素。

不是最有效的解决方案,但简洁明了。

+0

其中((n,i)=> i%2!= 0),,这里发生了什么,n和我没有声明数据类型,那么 – peter 2009-04-28 09:48:32

+0

这是工作正常在网上的代码,,你可以告诉我的每一件事,iam abeginner我需要研究的一切,什么是Var关键词在这里,我看到这些东西在LINQ查询 – peter 2009-04-28 09:54:53

+0

我已经在上面的答案中添加了解释,希望这可以帮助。 – 2009-04-28 10:00:12

4

这不会是你会得到的最短答案,但它似乎相当适合我。

int[] rgIn = new int[]{0,1,2,3,4,5}; 

int[] rgOut = new int[rgIn.Length/2]; 

int ixOut = 0; 
for (int ixIn = rgIn.Length - 2; ixIn >= 0; ixIn -= 2) 
{ 
    rgOut[ixOut++] = rgIn[ixIn]; 
} 
+0

这工作正常,,但另一个是更优化 – peter 2009-04-28 10:10:28

+0

你有基准吗?定义优化;) – Alex 2009-04-28 10:18:17