日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

前面我們已經(jīng)一起學(xué)習(xí)了冒泡排序(Python 實現(xiàn)經(jīng)典算法之冒泡排序),這篇文章,大家與好奇心就一起再來看看選擇排序吧。

簡介

選擇排序是一種簡單直觀的排序算法,無論什么數(shù)據(jù)進(jìn)去都是 O(n²) 的時間復(fù)雜度。所以用到它的時候,數(shù)據(jù)規(guī)模越小越好。唯一的好處可能就是不占用額外的內(nèi)存空間了吧。

原理

第一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然后再從剩余的未排序元素中尋找到最小(大)元素,然后放到已排序的序列的末尾(這里注意,是已排序好的末尾,不是數(shù)組末尾!)。以此類推,直到全部待排序的數(shù)據(jù)元素的個數(shù)為零。可以理解為 一個 0 到 n-1 的迭代,每次向后查找選擇一個最小的元素。選擇排序是不穩(wěn)定的排序方法。

步驟

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
  2. 再從剩余未排序元素中繼續(xù)尋找最小(大)元素,然后放到已排序序列的末尾;
  3. 重復(fù)步驟 2,直到所有元素均排序完畢。

動圖演示

Python 實現(xiàn)經(jīng)典算法之選擇排序

 

實例代碼

###
# author: 今日頭條:技術(shù)好奇心
###

# 選擇排序例子
def selection_sort(arr):
    # 按數(shù)組總長度來,依次遍歷
    for i in range(len(arr) - 1):
        # 存儲最小下標(biāo)值(這里默認(rèn)假設(shè)數(shù)組第一個為最小值)
        min_index = i
        # 以 j 為下標(biāo),i+1為起始位置,再次對數(shù)組進(jìn)行遍歷
        # (因為之前的以及是最小值排序好了,所以起始為i+1)
        for j in range(i + 1, len(arr)):
            # 如果這個數(shù)小于之前記錄的最小數(shù),則更新最小數(shù)的下標(biāo)
            if arr[j] < arr[min_index]:
                min_index = j
        # 將 i 位置的數(shù)(前面已排序序列的末尾的數(shù))和最小數(shù)進(jìn)行交換
        arr[i], arr[min_index] = arr[min_index], arr[i]
        # 這里為了方便大家對比參考,所以每次比較完了就打印一次
        print(arr)


# 執(zhí)行
if __name__ == '__main__':
    # 建立演示數(shù)組
    arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]
    # 執(zhí)行排序方法
    selection_sort(arr)
    # 看看比較完之后數(shù)組的樣子
    print('-------------------- 技術(shù)好奇心 -------------------')
    print(arr)

 

Python 實現(xiàn)經(jīng)典算法之選擇排序

 

運行結(jié)果:

[2, 44, 38, 5, 47, 15, 36, 26, 27, 3, 46, 4, 19, 50, 48]
[2, 3, 38, 5, 47, 15, 36, 26, 27, 44, 46, 4, 19, 50, 48]
[2, 3, 4, 5, 47, 15, 36, 26, 27, 44, 46, 38, 19, 50, 48]
[2, 3, 4, 5, 47, 15, 36, 26, 27, 44, 46, 38, 19, 50, 48]
[2, 3, 4, 5, 15, 47, 36, 26, 27, 44, 46, 38, 19, 50, 48]
[2, 3, 4, 5, 15, 19, 36, 26, 27, 44, 46, 38, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 36, 27, 44, 46, 38, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 44, 46, 38, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 44, 46, 38, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 46, 44, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 50, 48]
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
-------------------- 技術(shù)好奇心 -------------------
[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

 

Python 實現(xiàn)經(jīng)典算法之選擇排序

 

從上面的結(jié)果來看,排序是成功的。

里面為了方便大家觀看對比,我將每次的執(zhí)行結(jié)果也打印出來了。

從過程中可以看出,排序是從數(shù)組第一個開始的,然后逐漸通過遍歷比較往后替換排序。

分享到:
標(biāo)簽:排序 選擇
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定