簡體   English   中英

如何將List方法更改為Array方法?

[英]How can I change a List method to an Array method?

我正在嘗試使用合並排序算法對數字數組進行排序,但是該算法采用List <>而不是Array []

我試圖通過使用'.Length'替換'.Count'來改變使用Array []的算法,但是由於Arrays具有固定大小的特性,我在使用'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;
        }

我希望能夠將未排序的數組傳遞給方法,並輸出已排序的數組。

數組是固定大小的,與可變大小的列表不共享相同的方法。 因此,您需要將Array轉換為List,然后將List作為參數傳遞給該方法。 您可以使用:

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

或者,如果您喜歡linq:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM