選擇排序之簡單選擇排序算法

一、什麼是選擇排序?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]);   
    }
}
/*******************************************************************************************/
相關文章
相關標籤/搜索