選擇排序(Selection sort)是一種簡單直觀的比較排序算法胯府。
算法原理:每次從待排序的數(shù)據(jù)元素中選出最薪橄巍(或最大)的一個元素,存放在序列的起始位置盟劫,知道全部待排序的數(shù)據(jù)元素排完夜牡。
Python代碼1:
#Python算法--選擇排序1
import random
def main(array):
num = len(array)
for i in range(num-1):
for j in range(i+1,num):
if array[i]>array[j]:
array[i],array[j]=array[j],array[i]
print('選擇排序數(shù)組:',array)
if __name__ == '__main__':
array = []
for i in range(15):
array.append(random.randint(1,1000))
print('隨機生成數(shù)組:',array)
main(array)
代碼同前一篇的冒泡排序有些類似,但是數(shù)組元素的比較順序確實完全不同侣签,以數(shù)組的第一個元素開始,同其后的每一個元素分別做比較急迂,一旦發(fā)現(xiàn)比自身小的元素影所,就就換二者的位置,直到最小的元素排在最前邊僚碎。
執(zhí)行效果:
python選擇排序1
代碼1中猴娩,每次比較只要發(fā)現(xiàn)比自身元素小的元素就要交換位置,直至交換到最小的元素排到最前邊勺阐,頻繁的交換位置將影響到排序的效率卷中,可以在每次比較發(fā)現(xiàn)比自身元素小的元素后,記錄該元素為自小元素但不交換位置渊抽,然后與其他元素進行比較蟆豫,直到記錄的元素為最小元素后,再交換數(shù)組元素的位置懒闷,這要可提高程序的排序效率十减。(見代碼2)
Python代碼2:
#Python算法--選擇排序2
import random
def main(array):
num = len(array)
for i in range(num-1):
min = i
for j in range(i+1,num):
if array[min]>array[j]:
min = j
array[i],array[min]=array[min],array[i]
print('選擇排序數(shù)組:',array)
if __name__ == '__main__':
array = []
for i in range(15):
array.append(random.randint(1,1000))
print('隨機生成數(shù)組:',array)
main(array)
代碼2中借助變量min在每次比較后記錄較小元素的位置,待一輪比較結束后愤估,在進行元素位置的調(diào)換帮辟,提高排序效率。