演算法圖解筆記--排序演算法
阿新 • • 發佈:2021-01-14
分別定義最小值函式和排序函式
'''先定義一個找最小值的函式'''
def findmin(list):
smallvalue=list[0]#儲存最小值(暫定為第一個元素)
smallvalue_index=0#儲存最小值索引(暫定為第一個元素的索引)
for i in range(1,len(list)):#遍歷從1到列表元素個數的列表
if list[i]<smallvalue:#若暫時的最小值大於第i位元素
smallvalue=list[i]#則分別將第i位的值和索引由暫定最小值取代
smallvalue_index=i
return smallvalue_index#遍歷完成後暫定最小值即為最終最小值(返回值為最小值的索引而不是值)
print(findmin([8,6,9,10]))#測試結果
def sort(list):#定義從小到大排序函式
newlist=[]#創造一個空列表用於儲存過程及最終排序完成的列表
for i in range(len(list)):#遍歷次數為列表元素的個數
min=findmin(list)#呼叫最小值函式,將最小值的索引賦給min
newlist.append( list.pop(min))#list.pop方法是給定一個index刪除對應的vaule,並返回被刪除的value,由.appen方法在newlist列表末尾依次加入最小值
return newlist
print(sort([1,9,7,55,12,10]))##驗證無誤
在newlist.append(list.pop(min))處糾結了很久,因為沒有很牢固的記憶pop的用法,以為返回值是刪掉值之後的列表,警示自己和提醒他人不要犯這樣的錯誤