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

我正在尝试使用合并排序算法对数字数组进行排序,但该算法接受 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;

        }

我希望能够将未排序的数组传递到该方法中,并输出一个已排序的数组。


慕容森
浏览 108回答 1
1回答

慕尼黑5688855

数组是固定大小的,并且不与可变大小的列表共享相同的方法。因此,您需要将数组转换为列表,然后将列表作为参数传递给方法。您可以使用:List<object>&nbsp;list&nbsp;=&nbsp;myArray.Cast<Object>().ToList();或者如果你更喜欢 linq:List<object>&nbsp;list&nbsp;=&nbsp;myArray.ToList<object>();
打开App,查看更多内容
随时随地看视频慕课网APP