Tag: mergesort

为什么插入排序总是在此实现中击败合并排序?

我不明白:为什么我的插入排序实现每次跳过合并排序,对于任何大小的n ? public List InsertionSort(List elements, Boolean ascending = true) { for (Int32 j = 1; j = 0 && (elements[i].CompareTo(key) > 0) == ascending) elements[i + 1] = elements[i–]; elements[i + 1] = key; } return elements; } public List MergeSort(List elements, Boolean ascending = true) { Sort(elements, 0, elements.Count – 1); return elements; […]

C#合并排序性能

只是一个简单的说明,这不是功课。 我只是想弄清楚我的算法。 我在C#中使用MergeSort,我编写了一个可以根据generics进行排序的递归方法: class SortAlgorithms { public T[] MergeSort (T[] unsortedArray) where T : System.IComparable { T[] left, right; int middle = unsortedArray.Length / 2; left = new T[middle]; right = new T[unsortedArray.Length – middle]; if (unsortedArray.Length <= 1) return unsortedArray; for (int i = 0; i < middle; i++) { left[i] = unsortedArray[i]; } […]