我正在嘗試使用合并排序算法對數字數組進行排序,但該算法接受 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>();
- 1 回答
- 0 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消