八大排序之選擇排序

算法核心思想

選擇排序的算法核心思想是從數(shù)組中選擇最小的元素,放到第一個位置,再從數(shù)組 中選擇第二小的元素放到第二個位置,一直到數(shù)組的最后一個元素為止。

選擇排序的具體實現(xiàn)步驟

  1. 選擇數(shù)組的第一小的元素,將其放在第一個位置
  2. 選擇數(shù)組的第二小的元素,將其放在第二個位置
  3. 重復(fù)上述步驟。。。
  4. 選擇數(shù)組的第三小的元素,將其放在第n個位置

代碼實現(xiàn)

def selectSort(arr):
    length = len(arr)
    for i in range(length):
        min_value_index = i
        #查找數(shù)組的最小值的索引
        for j in range(i+1,length):
            if arr[j] < arr[min_value_index]:
                min_value_index = j
        #將最小值放到第i個位置
        arr[i],arr[min_value_index] = arr[min_value_index],arr[i]
    return arr

執(zhí)行解析

使用2層for循環(huán),外層循環(huán)控制查找第幾小的元素,用于真正的查找,當(dāng)內(nèi)層循環(huán) 找到第n小的元素的時候,將其放置在第n個位置。當(dāng)所有的元素都放置結(jié)束后,排 序結(jié)束。

時間復(fù)雜度分析&穩(wěn)定性

選擇排序時間復(fù)雜度是0( n2),選擇排序是一種不穩(wěn)定排序,舉個例子,序列5 8 5 2 9,我們知道第一遍選擇第1個元素5會和2交換,那么原序列中兩個5的相對前后順 序就被破壞了,所以選擇排序是一個不穩(wěn)定的排序算法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    zwb_jianshu閱讀 1,395評論 0 0
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    printf200閱讀 844評論 0 0
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進(jìn)行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    閑云清煙閱讀 818評論 0 6
  • 1 初級排序算法 排序算法關(guān)注的主要是重新排列數(shù)組元素,其中每個元素都有一個主鍵。排序算法是將所有元素主鍵按某種方...
    深度沉迷學(xué)習(xí)閱讀 1,593評論 0 1
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,347評論 0 2

友情鏈接更多精彩內(nèi)容