zoukankan      html  css  js  c++  java
  • 冒泡排序 和 选择排序的 区别 python

    参考: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

    通过这个过程,我们可以看到,每轮循环过程中,都会找出这个最值元素,下一轮排序时就不用再考虑这个元素了。

  • 相关阅读:
    mongodb
    python中读取文件的read、readline、readlines方法区别
    uva 129 Krypton Factor
    hdu 4734
    hdu 5182 PM2.5
    hdu 5179 beautiful number
    hdu 5178 pairs
    hdu 5176 The Experience of Love
    hdu 5175 Misaki's Kiss again
    hdu 5174 Ferries Wheel
  • 原文地址:https://www.cnblogs.com/shunyu/p/8446764.html
Copyright © 2011-2022 走看看