目錄
10.5.1?排序算法簡(jiǎn)介
10.5.2?冒泡排序算法
10.5.3 系統(tǒng)學(xué)習(xí)python
10.5.1 排序算法簡(jiǎn)介
所謂排序,是指將數(shù)據(jù)集合中的元素按從小到大的順序進(jìn)行排列,或按從大到小的順序進(jìn)行排列。前者稱為升序排序,后者稱為降序排序。在數(shù)據(jù)結(jié)構(gòu)與算法這門課程中,我們會(huì)學(xué)習(xí)到諸多與排序相關(guān)的算法,比如冒泡排序算法,選擇排序算法,快速排序算法,堆排序算法等。在本節(jié)教程中,我們來掌握非常經(jīng)典的冒泡排序算法。
10.5.2 冒泡排序算法
冒泡排序算法的原理很簡(jiǎn)單,相鄰元素兩兩間進(jìn)行比較,按照升序或降序的關(guān)系互換位置。比如在升序排序中,將大的氣泡放在后面,小的放在前面。n個(gè)元素兩兩之間進(jìn)行比較,只需比較n-1次,即可找出最值。找出最值后,最值自動(dòng)冒泡到區(qū)間的尾部,然后再進(jìn)行下一趟的比較。下圖所示為將降序排列的[3,2,1]列表使用冒泡排序排成升序:
根據(jù)以上原理,我們現(xiàn)在使用Python語言來實(shí)現(xiàn)冒泡排序算法:
Python文章來源:http://www.zghlxwxcb.cn/news/detail-420436.html
"""
@author: 薯?xiàng)l老師
@desc: 實(shí)現(xiàn)冒泡排序算法
"""
numbers = [3, 2, 1]
n = len(numbers)
# n個(gè)元素一共需要比較n-1趟
for outer_index in range(n-1):
# outer_index用來表示已經(jīng)冒泡到尾部的氣泡
# n個(gè)元素需比較n-1次才能找出最大或最小的值,所以是n-1
# 下一趟需在上一趟的基礎(chǔ)上再兩兩間進(jìn)行比較,所以得再減去outer_index
for inner_index in range(n-1-outer_index):
if numbers[inner_index] > numbers[inner_index+1]:
# 如果當(dāng)前氣泡大于后面的氣泡,就互換位置
numbers[inner_index], numbers[inner_index+1] = \
numbers[inner_index+1], numbers[inner_index]
# 執(zhí)行print來輸出升序排序后的列表
print(numbers)
10.5.3 系統(tǒng)學(xué)習(xí)python
??薯?xiàng)l老師簡(jiǎn)介:資深技術(shù)專家,技術(shù)作家,著有《Python零基礎(chǔ)入門指南》,《Java零基礎(chǔ)入門指南》等技術(shù)教程。薯?xiàng)l老師的博客:http://www.chipscoco.com, 系統(tǒng)學(xué)習(xí)后端,爬蟲,數(shù)據(jù)分析,機(jī)器學(xué)習(xí)、量化投資。文章來源地址http://www.zghlxwxcb.cn/news/detail-420436.html
到了這里,關(guān)于Python入門教程+項(xiàng)目實(shí)戰(zhàn)-10.5節(jié): 程序?qū)崙?zhàn)-冒泡排序算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!