【发布时间】:2015-11-30 12:19:23
【问题描述】:
我需要通过每次跳过一个元素来重新排序数组,首先将均匀索引的元素升序,然后将奇数索引的元素降序。
例如,假设我有一个 double 数组,其顺序如下:
[0, 0.3, 0.7, 1.1, 1.5, 1.9, 2.3, 2.7, 3.1, 3.5, 3.9]
我想这样订购:
[0, 0.7, 1.5, 2.3, 3.1, 3.9, 3.5, 2.7, 1.9, 1.1, 0.3]
如您所见,我对按值排序不感兴趣,而只对元素的索引感兴趣。我找不到给出索引的 Array.Sort 或 IEnumerable.OrderBy 的重载,所以我似乎无法使用它。
问这么简单的问题我感到有点羞愧,但我不知道如何优雅地做到这一点。我当然可以使用 foreach 循环并使用索引来完成它,但是我正在“翻译”一些 Matlab 代码,而这个特定的部分是用这种优雅的方式制作的(尽管如果你不习惯这种方式,理解起来会很复杂)东西)一个班轮:
y = y([1:2:n 2 * floor(n / 2):-2:2],:); % n being the number of elements in the array y
【问题讨论】: