選擇排序

簡單選擇排序相當於對冒泡排序的一個改進,冒泡排序是每次比較都交換數據,而選擇排序則是有目的性的交換。簡單排序的基本思想是選出最小的數與首位交換,再選出第二小的數和次位交換,以此類推。簡單選擇排序的時間複雜度爲O(n^2),是一種穩定的排序。


//交換函數,用於交換L數組中下表爲i和下表爲j的值
void swap(int L[],int i, int j)
{
    int temp = L[i];
    L[i] = L[j];
    L[j] = temp;
}
//簡單選擇排序
void SelectSort(int H[],int length)
{
    int i = 0;
    int j = 0;
    int min = 0;
    
    for (i = 0; i < length - 1; i++)
    {
        min = i;          //先將第一個下標定義爲最小下標
        for (j = i + 1; j < length - 1; j++)
        {
            //從第二個數據開始,如果比下標爲min的數小,就把該下標換成min下標,保證min下標中的數永遠都是最小的
            if (H[min] > H[j])
            {
                min = j;
            }
        }
        
        if (i != min)         //如果當前下標不爲最小下標,就和最小下標交換數據
        {
            swap(H,i,min);
        }
    }
}

簡單選擇排序時間複雜度:

無論數據的有序情況如何,簡單選擇排序都要進行(n - 1) + (n - 2) + (n - 3) +...+1次比較,所以時間複雜度爲O(n^2)


發佈了28 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章