冒泡排序 和 選擇排序的 區別 python

來源:互聯網
上載者:User

標籤:python   pytho   過程   需要   記錄   com   一個   排列   sort   

參考:https://www.cnblogs.com/banana201/p/4928733.html

 

## 冒泡排序法(Bubblesort) ##

所謂排序法,就是對一組無序的序列進行有序的排序(從大到小或者從小到大),那麼什麼叫冒泡排序法,冒泡排序法又是怎麼實現數組的有序排列呢。

冒泡排序法的具體實現方法是這樣的,從數組的第一個元素`arr[0]`開始,兩兩比較**(`arr[n],arr[n+1]`),如果前面的數大於後面的數(`arr[n] > arr[n+1]`),那麼交換兩個元素的位置,把大的數往後移動。這樣依次經過一輪比較以後,最大的數將會被交換到最後的位置(arr[n-1])。

 

先一起再來看看冒泡排序法是怎麼排序的。
  
  數組排序前    7    23    12    4    33    21    2    17    13    9          
  第一輪排序    7    12    4    23    21    2    17    13    9    33    
  第二輪排序    7    4    12    21    2    17    13    9    23    
  第三輪排序    4    7    12    2    17    13    9    21                 
  第四輪排序    4    7    2    12    13    9    17    
  第五輪排序    4    2    7    12    9    13        
  第六輪排序    2    4    7    9    12        
  第七輪排序    2    4    7    9    
  第八輪排序    2    4    7   
  第九輪排序    2    4      

可以看到,每一輪的排序,在這一輪中參與比較的元素中最大的數將會浮到最後。而冒泡排序的名字也是從這裡來的 。

 

 ## 選擇排序法(Selectionsort) ##

所謂的選擇是什麼意思呢,選擇就是於萬千花叢中擇其一,在選擇排序法中說的就是,每一次迴圈過程中,通過比較選擇出你需要的**最值**。

選擇排序法的過程是,通**過比較,選擇出每一輪中最值元素,然後把他和這一輪中最最前面的元素交換**,所以這個演算法關鍵是要記錄每次比較的結果,即每次比較後最值位置(下標)。

先來看看選擇排序的過程:

數組排序前    7    23    12    4    33    21    2    17    13    9      
第一輪迴圈    2    23    12    4    33    21    7    17    13    9          
第二輪迴圈          4      12    23    33    21    7    17    13    9    
第三輪迴圈                  7      23    33    21    12    17    13    9    
第四輪迴圈                           9      33    21    12    17    13    23         
第五輪迴圈                                   12    21    33    17    13    23    
第六輪迴圈                                           13    33    17    21    23   
第七輪迴圈                                                   17    33    21    23    
第八輪迴圈                                                           21    33    22   
第九輪迴圈                                                                    22    33

通過這個過程,我們可以看到,每輪迴圈過程中,都會找出這個最值元素,下一輪排序時就不用再考慮這個元素了。

 

冒泡排序 和 選擇排序的 區別 python

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.