冒泡排序 和 选择排序的 区别 python
Posted shunyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序 和 选择排序的 区别 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
通过这个过程,我们可以看到,每轮循环过程中,都会找出这个最值元素,下一轮排序时就不用再考虑这个元素了。
以上是关于冒泡排序 和 选择排序的 区别 python的主要内容,如果未能解决你的问题,请参考以下文章