public static void Sort <T>(T[] array) where T : IComparable { for (int i = 0; i < array.Length; i++) { int j = i; while (j >= 1 && array[j].CompareTo(array[j - 1]) < 0) { ArrayService.Swap(array, j, (j - 1)); j--; } } }
public static void Sort <T>(T[] array) where T : IComparable { for (int i = array.Length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (array[j].CompareTo(array[j + 1]) > 0) { ArrayService.Swap(array, j, (j + 1)); } } } }
public static void Sort <T>(T[] array) where T : IComparable { for (int i = (array.Length - 1); i > 0; i--) { T maxValue = array[i]; int maxValueIndex = i; int j; for (j = 0; j < i; j++) { if (array[j].CompareTo(maxValue) > 0) { maxValue = array[j]; maxValueIndex = j; } } ArrayService.Swap(array, i, maxValueIndex); } }
public static void RecursiveSort <T>(T[] array, int ini, int fin) where T : IComparable { if (ini >= fin) { return; } int pivotIndex = ini; int i = ini + 1; int j = fin; while (i < j) { while (array[j].CompareTo(array[pivotIndex]) > 0 && j > ini) { j--; } while (array[i].CompareTo(array[pivotIndex]) < 0 && i < fin) { i++; } if (i != j && i <= j) { ArrayService.Swap(array, i, j); } } if (array[pivotIndex].CompareTo(array[j]) > 0) { ArrayService.Swap(array, j, pivotIndex); } int newFin = j - 1; int newIni = j + 1; RecursiveSort(array, ini, newFin); RecursiveSort(array, newIni, fin); }