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

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

  • 相关阅读:
    微信报警提示
    使用pygal图表显示网站API接口数据
    读写文本文件,乱码解决方案
    MD5加密
    将DataTable导入到SQL数据库表中
    NPOI组件操作Excel导入、导出
    二叉树由先序和中序建树
    用两个栈模拟队列
    math type白嫖教程
    IDEA常用快捷键
  • 原文地址:https://www.cnblogs.com/shunyu/p/8446764.html
Copyright © 2011-2022 走看看