python 實現 列表 選擇排序 演算法(兩種方法實現)
阿新 • • 發佈:2019-01-13
方法一:(remove方法)
arr = [2, 3, 5, 6, 4, 1, 9] #找出最小元素 def findsmallest(arr): smallest = arr[0] #假設第一個元素為最小值 for i in range(1,len(arr)): if arr[i] < smallest: smallest = arr[i] return smallest #返回列表的最小真實值 def order_arr(arr): newarr = [] #建立空列表,為.append做準備 for i in range(len(arr)): a = findsmallest(arr) #找出最小值 newarr.append(a) #把最小值新增到新列表 arr.remove(a) #把找到的這個值從原列表中剔除,remove接元素本身,pop接下標 return newarr print(order_arr(arr))
方法二:(pop方法)
arr = [2, 3, 5, 6, 4, 1, 9] #尋找最小元素的索引值 def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(1, len(arr)): if arr[i] < smallest: smallest_index = i #更新最小值的索引 smallest = arr[i] return smallest_index #返回最小元素的列表索引值 # Sort array def selectionSort(arr): newArr = [] for i in range(len(arr)): smallest = findSmallest(arr) newArr.append(arr.pop(smallest)) #pop方法後跟元素當前列表最小值的索引值,arr.pop後arr列表剔除了本列表中的最小值;arr.pop(smallest)返回最小值 return newArr print(selectionSort(arr) # ============================================================================= # 程式執行到所遇到的第一個return即返回(退出def塊),不會再執行第二個return。 # # 要返回兩個數值,寫成一行即可: # # def a(x,y): # if x==y: # return x,y # # print a(3,3)<br><br>>>> 3,3 # =============================================================================