首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种排序通过在列表的开头或结尾交替放置项目来排序项目?

哪种排序通过在列表的开头或结尾交替放置项目来排序项目?
EN

Stack Overflow用户
提问于 2015-02-07 20:25:03
回答 1查看 72关注 0票数 0

我有一个从大到小的有序列表。

代码语言:javascript
复制
{ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }

我想要一份这样的清单

代码语言:javascript
复制
{ 10, 8, 6, 4, 2, 1, 3, 5, 7, 9 }

如果您可以看到,新的顺序是,首先按每个奇数索引升序,然后按每个偶数索引降序。

这个想法是,列表的每一半都具有大致相同的权重。e.g

代码语言:javascript
复制
{ 10, 8, 6, 4, 2 } = 30
{ 1, 3, 5, 7, 9 } = 25

标题是我能用一句话解释的最好的答案,这就是为什么我在谷歌上找不到答案的原因。

这是我在C#中的go。我欢迎对我的尝试的任何评论,但我只查看算法名称,如果它有一个的话。

代码语言:javascript
复制
var firstHalf = new List<string>();
var secondHalf = new List<string>();

for (int i = 0; i < originalList.Count; i++)
{
    if (i % 2 == 1)
    {
        firstHalf.Add(originalList[i]);
    }
    else
    {
        secondHalf.Add(originalList[i]);
    }
}

secondHalf.Reverse();

var finalList = new List<string>(firstHalf);
finalList.AddRange(secondHalf);
EN

回答 1

Stack Overflow用户

发布于 2015-02-07 20:35:20

这可能不是最有效的方法,但它很简单:

代码语言:javascript
复制
var yourlist = originalList.Where(i => i % 2 == 0)
                           .OrderBy(i => i)
                           .Concat(originalList.Where(i => i % 2 != 0)
                                               .OrderByDescending(i => i))
                           .ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28382073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档