public static void BubbleSort <T>(ListSlice <T> list) where T : System.IComparable <T>, System.IComparable { for (int i = list.Count; i >= 1; i--) { for (int j = 1; j < i; j++) { list.SwapIfGreater(j - 1, j); } } }
private static void QuickSort <T>(ListSlice <T> list) where T : System.IComparable <T>, System.IComparable { if (list.Count == 3) { list.SwapIfGreater(0, 2); list.SwapIfGreater(1, 2); list.SwapIfGreater(0, 1); } else if (list.Count == 2) { list.SwapIfGreater(0, 1); } else if (list.Count <= 16) { InsertionSort(list); } else if (list.Count > 3) { int mid = Partation(list); QuickSort(list.GetSlice(0, mid)); QuickSort(list.GetSlice(mid + 1, list.Count - mid - 1)); } }
private static void MergeSort <T>(ListSlice <T> list) where T : System.IComparable, System.IComparable <T> { if (list.Count > 2) { int mid = list.Count / 2; var left = list.GetSlice(0, mid); var right = list.GetSlice(mid, list.Count - mid); MergeSort(left); MergeSort(right); Merging(left, right); } else { list.SwapIfGreater(0, list.Count - 1); } }