python學習(6)選擇排序演算法簡單代碼

來源:互聯網
上載者:User

標籤:nis   app   return   完成   儲存   ret   簡單   open   led   

選擇排序的基本思想是:每一趟在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 完成

 

寫一個程式,對任意數組做從小到大排列:

 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=i12     return smallest_index13 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_arr20 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
View Code

 

換成從大到小排列:

 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=i13     return max_munber_index14 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_arr21 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
View Code

 

python學習(6)選擇排序演算法簡單代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.