JavaScript中的 “冒泡排序” 和 “选择排序”---逆战班

冒泡排序和选择排序

作用原理:将数组中的数值,按照执行的顺序,从小到大排序

一、冒泡排序

1、原理:相邻的两个单位比较存储的数据,如果第一个单元的数据较大,就将两个相邻单元交换存储数据。

2、过程:从起始单元开始比较,第一次循环会选出一个最大值,放在数组所有单元的最后,之后每次循环都会比较出一个本次循环的最大值,放在当前参与比较的最后,之前已经比较出的单元,不会参与下一次比较。
如下示意图所示:
JavaScript中的 “冒泡排序” 和 “选择排序”---逆战班
代码如下:
JavaScript中的 “冒泡排序” 和 “选择排序”---逆战班
3、优化
1、单次循环,最后一个单元,通过倒数第二个单元,参与比较,最后一个单元,就不参与单次循环。
2、之前比较出最大值,不参与下一次比较。
3、n个单元,只要比较n-1次,最后一个单元时,不要再循环比较。

4、核心:交换存储数据
两个相邻的单元,比较数据大小,第一个单元数值较大,就交换两个单元的存储数据。

二、选择排序

1、原理:
先定义循环的起始位置,默认为最小值起始位置。

2、过程:
从起始位置开始,执行循环
(1)如果有位置上的数值,小于存储索引位置上的数值,就存储这个位置上的索引值。
(2)循环结束,比较存储的索引,是否是起始位置上索引,如果不是就交换两个位置上的数值。会将本次循环的最小值,放置在循环的起始位置上,在执行多次循环,完成排序。

过程如下示意图:
JavaScript中的 “冒泡排序” 和 “选择排序”---逆战班

代码如下:
JavaScript中的 “冒泡排序” 和 “选择排序”---逆战班

3、优化:
1、之前比较过的数值、不参与标记
2、n和单元,只要比较n-1次

4、核心:找到最小的索引,起始位置交换数值。