交换排序包括:冒泡排序和快速排序
具体代码如下:
冒泡排序:
/// <summary> /// 冒泡排序 /// 稳定性:稳定 /// 时间复杂度:O(n2) /// </summary> public static int[] BubbleSort(int[] array) { int temp = 0; for (int i = 0; i < array.Length - 1; i++) { for (int j = 0; j < array.Length - 1; j++) { if (array[j] < array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } return array; }
快速排序:
/// <summary> /// 快速排序 分治法 /// 稳定性:不稳定 /// 时间复杂度:最理想 O(nlogn) 最差时间O(n^2) /// </summary> public static void QuickSort(int[] array, int left, int right) { if (left < right) { int i = left; int j = right - 1; int middle = array[(left + right) / 2]; while (true) { while (i < right && array[i] < middle) { i++; }; while (j > 0 && array[j] > middle) { j--; }; if (i >= j) break; array[i] = array[i] + array[j]; array[j] = array[i] - array[j]; array[i] = array[i] - array[j]; if (array[i] == array[j]) j--; } QuickSort(array, left, i); QuickSort(array, i + 1, right); } }