我正在尝试使用合并排序算法对数字数组进行排序,但该算法接受 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 关注
- 107 浏览
添加回答
举报
0/150
提交
取消