算法,在编程里面是很重要的。最近文章给大家介绍了两种排序方法,一个是冒泡排序,一个是选择排序。发现不少的同学会把这个算法搞混,今天我们就再来巩固下这两种算法的知识点,看下选择排序和冒泡排序的区别:
选择排序和冒泡排序的区别
冒泡排序的原理是:
比较邻的两个数的大小,如果顺序错了,就交换位置。顺序没错,就不用交换。对每一对相邻元素做同样的工作,从后往前或者从前往后都可以。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到么有任何一对数字需要比较。
选择排序的原理是:
每一次从排序的数据元素中选出最小(或最大)的一个元素,将这个数字交换至最左边,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。
选择排序和冒泡排序举例:
原始数据:[45, 489, 12, 160, 63]
冒泡排序:(从大到小排序)
第一轮数据(比较4次)
[45, 489, 12, 160, 63] 第1次
[45, 489, 160, 12, 63] 第2次
[45, 489, 160, 12, 63] 第3次
[489, 45, 160, 12 , 63] 第4次
第二轮数据(比较3次)
[489, 45, 160, 63 , 12] 第1次
[489, 45, 160, 63 , 12] 第2次
[489, 160, 45, 63 , 12] 第3次
第三轮数据(比较2次)
[489, 160, 45, 63 , 12] 第1次
[489, 160, 63 45 , 12] 第2次
第四轮数据(比较1次)
[489, 160, 63 45 , 12] 第1次
选择法排序(从大到小排序)
[489, 45, 12, 160, 63] 第1轮
[489, 160, 12, 45, 63] 第2轮
[489, 160, 63, 45, 12] 第3轮
[489, 160, 63, 45, 12] 第4轮
选择排序和冒泡排序的区别
(1)冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值;
(2)冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;
(3)冒泡排序是通过数去找位置,选择排序是给定位置去找数;
(4)两种方法都能实现排序,循环的次数也一样。
(5)区别是“冒泡排序”每次内层循环比较后,都修改列表中的数值顺序。而“选择排序”每次内层循环后,只是记录了最大值的位置。只有内层循环结束后,才将记录的最大值与外层循环的当前值做比较。发现最大值与当前值不一样,才改变列表中数值的顺序。
(6)显然“冒泡排序”更容易理解,适合编程入门,处理少量数据的时候。“选择排序”难度略高,适合有一定编程基础,处理大量数据的时候。
选择排序和冒泡排序的分辨方法:
两种排序方法快速分辨也很容易,“选择排序”里面有一个用于存储最大值位置的变量,没有就是“冒泡排序”。
选择排序和冒泡排序相关重要知识点:
scratch选择排序算法
scratch用冒泡排序,实现数字从大到小排序
scratch冒泡排序算法