一、什麼是選擇排序?html
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工做原理是每一次從待排序的數據元素中算法
選出最小(或最大)的一個元素,存放在序列的起始位置,直到所有待排序的數據元素排完。 選擇排序是數組
不穩定的排序方法(好比序列[5, 5, 3]第一次就將第一個[5]與[3]交換,致使第一個5挪動到第二個5spa
後面)。3d
簡單選擇排序算法基本思想: 例如在一個有n個元素的一個數組中r[n],第一趟在r[0]-r[n-1]中找到其中code
最小的一個元素,將他與r[0]交換位置;第二趟在r[1]-r[n-1]中找到最小的一個元素,將他與r[1]交換htm
位置;依次類推,第i趟在r[i-1]-r[n-1]中找到最小的一個元素,將他與r[i-1]交換位置,直道將數組中blog
全部元素排序完成。排序
時間複雜度: O(n^2)索引
二、簡單選擇排序算法效果演示
三、算法實現(基於C++代碼)
/******************************** 簡單選擇排序算法實現 ***********************************/ template<typename T> void selectionSort (T a[], int count) { // 對a[i...count-1]進行循環遍歷 for (int i = 0; i < count; i++) { int minIndex = i; // 最小元素位置索引值minIndex初始化爲i /* 在[i, count)區間中找到最小的數 */ for (int j = i + 1; j < count; j++) { if (a[j] < a[minIndex]) { minIndex = j; } } /* 將找到的最小的元素和本區間中最前面的那個數交換位置,即將最小的數放在最前面的位置 */ std::swap(a[i], a[minIndex]); } } /*******************************************************************************************/