合并两个顺序表

  class Program
    {
        static void Main(string[] args)
        {
            List<int> left = new List<int>();
            List<int> right = new List<int>();

            for (int i = 0; i < 11; i+=2)
            {
                left.Add(i);
            }
            for (int j = 1; j < 12; j += 2)
            {
                right.Add(j);
            }
            List<int> result = Merge(left, right);
           
            foreach(int item in result)
            {
                Console.Write(item + "  ");
            }
            Console.WriteLine();

            Console.ReadLine();
        }

        //由小到大的顺序
        public static List<int> Merge(List<int> left, List<int> right)
        {
            int length = left.Count + right.Count;
            //创建合适大小的表
            List<int> result = new List<int>(length);

            int leftIndex = 0;
            int rightIndex = 0;
           
            //遍历left和right,顺序比较
            while (leftIndex < left.Count && rightIndex < right.Count)
            {
                if (left[leftIndex] < right[rightIndex])
                {
                    result.Add(left[leftIndex]);
                    leftIndex++;
                }
                else
                {
                    result.Add(right[rightIndex]);
                    rightIndex++;
                }
            }
            //将left或者right中剩余元素加入result中
            if (leftIndex < left.Count)
            {
                for (int i = leftIndex; i < left.Count; i++)
                {
                    result.Add(left[i]);
                }
            }
            if (rightIndex < right.Count)
            {
                for (int i = rightIndex; i < right.Count; i++)
                {
                    result.Add(right[i]);
                }
            }
            //返回结果
            return result;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值