冒泡排序
int[] arr = { 6, 5, 3, 1, 8, 7, 2, 4 }; //外層循環控制排序趟數 for (int i = 0; i < arr.Length - 1; i++) { //內層循環控制每一趟排序多少次 for (int j = 0; j < arr.Length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
快速排序
選擇排序也是一種簡單直觀的排序算法。
它的工作原理很容易理解:初始時在序列中找到最小(大)元素,放到序列的起始位置作為已排序序列;然后,再從剩余未排序元素中繼續尋找最小(大)元素,放到已排序序列的末尾。
以此類推,直到所有元素均排序完畢。
注意選擇排序與冒泡排序的區別:冒泡排序通過依次交換相鄰兩個順序不合法的元素位置,從而將當前最小(大)元素放到合適的位置;
而選擇排序每遍歷一次都記住了當前最小(大)元素的位置,最后僅需一次交換操作即可將其放到合適的位置。
int[] arr = { 8, 5, 2, 6, 9, 3, 1, 4, 0, 7 }; // 從小到大選擇排序
void SelectionSort(int[] A) { for (int i = 0; i < A.Length - 1; i++) // i為已排序序列的末尾 { int min = i; for (int j = i + 1; j < A.Length; j++) // 未排序序列 { if (A[j] < A[min]) // 找出未排序序列中的最小值 { min = j; } } if (min != i) { Swap(A, min, i); // 放到已排序序列的末尾,該操作很有可能把穩定性打亂,所以選擇排序是不穩定的排序算法 } } }
希爾排序
http://www.cnblogs.com/cnki/
堆排序
https://www.cnblogs.com/learn-program/p/9613042.html
https://www.cnblogs.com/kubidemanong/p/9722646.html
http://www.cnblogs.com/eniac12/p/5329396.html
https://www.cnblogs.com/cuiyuanzhang/p/10452516.html