合并2个或更多的列表/数组,保存从最小元素到最大元素的顺序

本文关键字:元素 顺序 保存 数组 2个 列表 合并 | 更新日期: 2023-09-27 18:11:22

我需要一点帮助我有一个数组,我需要在不同的线程中排序。当排序结束时,我得到一些排序元素的子列表,例如

-124.5 -9.03 0 13.2

-99.3 12.6 189.034 200.0

注意,可以有更多子列表如果有任何方法我可以合并这些子列表为一个保存排序顺序(从最小的元素到最大的)在结果列表?


使用了前一个项目中的一段代码

    public static T[] ConcatArrs<T>(T[] left, T[] right) where T : System.IComparable<T>
    {
        T[] result = new T[left.Length + right.Length];
        int lc = 0, rc = 0, i = 0;
        for(i = 0; i < left.Length + right.Length; i++)
        {
            if (lc == left.Length)
            {
                result[i] = right[rc];
                rc++;
                continue;
            }
            if (rc == right.Length)
            {
                result[i] = left[lc];
                lc++;
                continue;
            }
            if (left[lc].CompareTo(right[rc]) <=0 )
                result[i] = left[lc++];
            else
                result[i] = right[rc++];
        }
        return result;
    }

合并2个或更多的列表/数组,保存从最小元素到最大元素的顺序

您可以使用List<T>中的AddRange()方法来实现这一点,因为它保留了顺序。

var firstList = new List<double> { -124.5, -9.03, 0, 13.2, };
var secondList = new List<double> {-99.3, 12.6, 189.034, 200.0};
firstList.AddRange(secondList);