You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将已排序列表按交错顺序排列?

如何将已排序列表按交错顺序排列?

看起来你现在的代码是把每个元素的所有Amount实例一次性输出完,而不是按优先级交错着输出对吧?我来帮你调整一下逻辑~

首先,你的列表已经按Priority排好序了,现在要做的是循环遍历这个排序后的列表,每次从每个元素里取一个输出,直到所有元素的Amount都变成0。

这里有个更清晰的实现思路:

  • 先保留排序后的列表(注意最好不要修改原列表的Amount,可以创建一个副本,避免影响原数据)
  • 循环检查是否还有元素的Amount大于0
  • 每次循环遍历排序后的列表,只要当前元素的Amount>0,就输出它的Name,然后把Amount减1

下面是修改后的代码:

public static void Main()
{
    List<ColumnArrangment> listVersion = new List<ColumnArrangment>();
    listVersion.Add(new ColumnArrangment { Name ="Questions", Priority = 2, Amount = 2});
    listVersion.Add(new ColumnArrangment { Name ="Parts", Priority = 1, Amount = 2});
    listVersion.Add(new ColumnArrangment { Name ="CodeLetters", Priority = 4, Amount = 2});
    listVersion.Add(new ColumnArrangment { Name ="Answers", Priority = 3, Amount = 2});

    // 先按Priority排序,并且创建副本避免修改原数据
    List<ColumnArrangment> sortedList = listVersion
        .OrderBy(o => o.Priority)
        .Select(ca => new ColumnArrangment(ca)) // 使用拷贝构造函数创建副本
        .ToList();

    // 循环直到所有元素的Amount都为0
    while (sortedList.Any(ca => ca.Amount > 0))
    {
        foreach (var item in sortedList)
        {
            if (item.Amount > 0)
            {
                Console.WriteLine(item.Name);
                item.Amount--;
            }
        }
    }
}

public class ColumnArrangment
{
    public string Name { get; set; }
    public int Priority { get; set; }
    public int Amount { get; set; }
    public ColumnArrangment()
    { }
    public ColumnArrangment(ColumnArrangment ca)
    {
        Name = ca.Name;
        Priority = ca.Priority;
        Amount = ca.Amount;
    }
}

这段代码运行后,输出就是你想要的交错顺序:

Parts
Questions
Answers
CodeLetters
Parts
Questions
Answers
CodeLetters

为什么要创建副本呢?因为如果直接修改原列表的Amount,后续如果还要用到原数据就会有问题,用你已经写好的拷贝构造函数刚好可以快速创建独立的副本~

另外,之前你的代码里在foreach里又调用SortedList.FindIndex和ElementAt,其实没必要,因为foreach已经在遍历每个元素了,直接操作当前元素就可以,不过核心问题还是输出顺序的逻辑不对,现在改成外层循环检查是否还有剩余元素,内层遍历排序后的列表逐个输出,就能实现交错效果啦。

备注:内容来源于stack exchange,提问作者CJP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:09:32