国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python入門(mén)教程+項(xiàng)目實(shí)戰(zhàn)-11.5節(jié): 程序?qū)崙?zhàn)-選擇排序算法

這篇具有很好參考價(jià)值的文章主要介紹了Python入門(mén)教程+項(xiàng)目實(shí)戰(zhàn)-11.5節(jié): 程序?qū)崙?zhàn)-選擇排序算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

11.5.1?排序算法簡(jiǎn)介

11.5.2?選擇排序算法

11.5.3 系統(tǒng)學(xué)習(xí)python


11.5.1 排序算法簡(jiǎn)介

所謂排序,是指將數(shù)據(jù)集合中的元素按從小到大的順序進(jìn)行排列,或按從大到小的順序進(jìn)行排列。前者稱為升序排序,后者稱為降序排序。在數(shù)據(jù)結(jié)構(gòu)與算法這門(mén)課程中,我們會(huì)學(xué)習(xí)到諸多與排序相關(guān)的算法,比如冒泡排序算法,選擇排序算法,快速排序算法,堆排序算法等。在本節(jié)教程中,我們來(lái)掌握非常經(jīng)典的選擇排序算法。

11.5.2 選擇排序算法

選擇排序的核心思想: 從數(shù)據(jù)集合中選出最小(大)的一個(gè)元素,存放在區(qū)間的起始位置,再?gòu)氖S嗟奈磁判蛟刂袑ふ业阶钚?大)的元素,放到已排序的區(qū)間的末尾,不斷重復(fù)這樣的過(guò)程,直至實(shí)現(xiàn)排序。下圖所示為將最小值1選擇到區(qū)間首部的過(guò)程:

Python入門(mén)教程+項(xiàng)目實(shí)戰(zhàn)-11.5節(jié): 程序?qū)崙?zhàn)-選擇排序算法

(1) 初始情況下假定最小值為3,最小值索引為0

(2) 將元素3與元素2進(jìn)行比較,2比3小,更新最小值索引為元素2的索引1

(3) 將索引1對(duì)應(yīng)的元素2與末尾的1進(jìn)行比較,1比2小,更新最小值索引為元素1的索引2

(4) 最小值索引2不等于初始的最小值索引0,故將元素3與1進(jìn)行互換。

根據(jù)以上原理,我們現(xiàn)在使用Python語(yǔ)言來(lái)實(shí)現(xiàn)選擇排序算法:

Python

"""
@author: 薯?xiàng)l老師
@desc: 實(shí)現(xiàn)選擇排序算法
"""

numbers = [3, 2, 1]
n = len(numbers)

# n個(gè)元素需要選擇n-1趟才能實(shí)現(xiàn)排序,所以是n-1
for outer_index in range(n-1):
    # 先假定outer_index索引指向的元素為最小值
    min_index = outer_index
    # 每次用當(dāng)前元素與剩下的所有元素進(jìn)行比較,所以是[outer_index+1, n)
    for inner_index in range(outer_index+1, n):
        if numbers[inner_index] < numbers[min_index]:
            # 在比較的過(guò)程中,一旦發(fā)現(xiàn)元素值比min_index指向的元素還小,就更新索引
            min_index = inner_index
            
    # 循環(huán)結(jié)束后判斷min_index是否等于一開(kāi)始賦值的outer_index
    if min_index != outer_index:
        """
        如果min_index非等于outer_index, 就說(shuō)明剩余的元素中有比一開(kāi)始假定的最小值還小
        此時(shí),就應(yīng)該互換位置。此即選擇排序的核心,選擇一個(gè)最大的或最小的,然后互換位置
        """
        numbers[outer_index], numbers[min_index] = \
            numbers[min_index], numbers[outer_index]
        
print(numbers)

11.5.3 系統(tǒng)學(xué)習(xí)python

薯?xiàng)l老師簡(jiǎn)介:資深技術(shù)專家,技術(shù)作家,著有《Python零基礎(chǔ)入門(mén)指南》,《Java零基礎(chǔ)入門(mén)指南》等技術(shù)教程。薯?xiàng)l老師的博客:http://www.chipscoco.com, 系統(tǒng)學(xué)習(xí)后端,爬蟲(chóng),數(shù)據(jù)分析,機(jī)器學(xué)習(xí)、量化投資。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-430941.html

到了這里,關(guān)于Python入門(mén)教程+項(xiàng)目實(shí)戰(zhàn)-11.5節(jié): 程序?qū)崙?zhàn)-選擇排序算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包