1.冒泡排序
算法复杂度O(n^2)
每次冒泡结束将最大值放在最后。
public void BubbleSort(int[] arr) { for (int i = 0; i < arr.Length; i++) { for (int j = 0; j < arr.Length - i - 1; j++) { if (arr[j] > arr[j + 1]) Swap(arr, j, j + 1); } } }
2.选择排序
算法复杂度O(n^2)
每次排序找到最小值的索引,然后交换将最小值放在前面,与冒泡排序不同,只在内层循环完成后交换一次,
public void SelectSort(int[] arr) { int minIndex; for (int i = 0; i < arr.Length; i++) { minIndex = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[minIndex]) minIndex = j; } Swap(arr, i, minIndex); } }
3.插入排序
算法复杂度 O(n^2)
认为第一个元素是有序得,然后将后面得元素依次插入到有序列得正确位置
public void InsertSort(int[] arr) { for (int i = 1; i < arr.Length; i++) { int temp = arr[i]; int j = i - 1; while (j >= 0 && temp < arr[j]) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = temp; } }