選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄做爲有序序列中第i個記錄。基於此思想的算法主要有簡單選擇排序、樹型選擇排序和堆排序。[1]
簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增加直到所有排序完畢。
如下爲簡單選擇排序的存儲狀態,其中大括號內爲無序區,大括號外爲有序序列:
初始序列:{49 27 65 97 76 12 38}
第1趟:12與49交換:12{27 65 97 76 49 38}
第2趟:27不動 :12 27{65 97 76 49 38}
第3趟:65與38交換:12 27 38{97 76 49 65}
第4趟:97與49交換:12 27 38 49{76 97 65}
第5趟:76與65交換:12 27 38 49 65{97 76}
第6趟:97與76交換:12 27 38 49 65 76 97 完成python
寫一個程序,對任意數組作從小到大排列:算法
1 #!/usr/bin/env python 2 # -*- coding: UTF-8 -*- 3 # Author:show530 4 5 def find_minmunber(list): 6 smallest_munber=list[0] 7 smallest_index=0 8 for i in range(1,len(list)): 9 if list[i]<smallest_munber: 10 smallest_munber=list[i] 11 smallest_index=i 12 return smallest_index 13 14 def from_small_arr(arr): 15 new_arr=[] 16 for i in range(len(arr)): 17 min_munber=find_minmunber(arr) 18 new_arr.append(arr.pop(min_munber)) 19 return new_arr 20 21 22 23 my_list=[9,24,56,97,82,1,3,6,997,642,352] 24 print("列表從小到大排列爲:") 25 print(from_small_arr(my_list))
C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/DAY1/SX.py 列表從小到大排列爲: [1, 3, 6, 9, 24, 56, 82, 97, 352, 642, 997] Process finished with exit code 0
換成從大到小排列:數組
1 #!/usr/bin/env python 2 # -*- coding: UTF-8 -*- 3 # Author:show530 4 5 6 def find_max_munber(list): 7 max_munber=list[0] 8 max_munber_index=0 9 for i in range(1,len(list)): 10 if list[i]>max_munber: 11 max_munber=list[i] 12 max_munber_index=i 13 return max_munber_index 14 15 def form_large_small(arr): 16 new_arr=[] 17 for i in range(len(arr)): 18 largest_number=find_max_munber(arr) 19 new_arr.append(arr.pop(largest_number)) 20 return new_arr 21 22 my_list=[7,56,89,41,8,2,46,92,478,1,896,74,66] 23 print("數組從大到小排列順序爲:") 24 print(form_large_small(my_list))
C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/DAY1/sx2.py 數組從大到小排列順序爲: [896, 478, 92, 89, 74, 66, 56, 46, 41, 8, 7, 2, 1] Process finished with exit code 0