为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 List 方法更改为 Array 方法?

如何将 List 方法更改为 Array 方法?

C#
慕容森 2023-08-20 14:25:29
我正在尝试使用合并排序算法对数字数组进行排序,但该算法接受 List<> 而不是 Array[]我尝试更改算法以使用 Array[],而不是将 '.Count' 替换为 '.Length',但由于数组的固定大小性质,我在使用 'add' 和'消除'private static List<int> MergeSort(List<int> unsorted)        {            if (unsorted.Count <= 1)                return unsorted;            List<int> left = new List<int>();            List<int> right = new List<int>();            int middle = unsorted.Count / 2;            for (int i = 0; i < middle; i++)              {                left.Add(unsorted[i]);            }            for (int i = middle; i < unsorted.Count; i++)            {                right.Add(unsorted[i]);            }            left = MergeSort(left);            right = MergeSort(right);            return Merge(left, right);        }        private static List<int> Merge(List<int> left, List<int> right)        {            List<int> result = new List<int>();            while (left.Count > 0 || right.Count > 0)            {                if (left.Count > 0 && right.Count > 0)                {                    if (left.First() <= right.First())                      {                        result.Add(left.First());                        left.Remove(left.First());                          }                    else                    {                        result.Add(right.First());                        right.Remove(right.First());                    }                }                else if (left.Count > 0)                {                    result.Add(left.First());                    left.Remove(left.First());                }                else if (right.Count > 0)                {                    result.Add(right.First());                    right.Remove(right.First());                }            }            return result;        }我希望能够将未排序的数组传递到该方法中,并输出一个已排序的数组。
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

数组是固定大小的,并且不与可变大小的列表共享相同的方法。因此,您需要将数组转换为列表,然后将列表作为参数传递给方法。您可以使用:

List<object> list = myArray.Cast<Object>().ToList();

或者如果你更喜欢 linq:

List<object> list = myArray.ToList<object>();


查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信