------------恢复内容开始------------
冒泡排序 跟 选择排序
冒泡排序:
1.冒泡排序
1>主要原理是 将相邻的两个单位,比较存储的数据,
如果第一个单元的数据较大,就将两个相邻单元,交换存储数据。
2>主要过程是 从起始的第一个单位开始比较,
开始第一次循环,会选择出一个最大值,放在数组单元的最后,
之后的每次循环,都会选择出一个最大值,放在当前参与比较单元的最后。
3>主要核心是 交换存储的数据
相邻的单元,比较数据的大小,第一个单元数值较大,就交换两个单元存储的数值
4>下面我们来通过代码来具体了解一下冒泡排序
eg.
var arr =[5,4,3,2,1],我们来给这个数组用冒泡排序排一下顺序
首先,我们分为两层循环。
内层循环,每次循环都比较出一个最大值,然后进行判断(两个相邻的单元比较数据大小,如果第
一个单元数据较大就交换两个单元存储的数据,交换数据时要有一个中间值,来暂时存储数据)
代码如下:
外层循环,循环执行的排序操作,循环次数是数组的单元个数减1 -1
代码如下:
然后将内层循环放入到外层循环中。代码如下:
然后输出 代码如下:
最后进行代码的优化:
内层优化:上一次比较出的数值不会参与下一次的循环 所以要 -j
当次循环的最后一个单元,通过倒数第二个单元,参与比较但是不参与循环 -1
代码如下:
外层优化:如果有n个单元参加排序,最后只需要循环n-1次,所以要-1
代码如下:
最后附上完整的代码:
选择排序
2.选择排序
1>主要核心:从起始位置开始,与之后的单元进行比较,如果触发条件,就存储这个单元的索引下标。
循环结束,如果索引下标不是起始位置下标,就交换存储数据
2>主要过程:先定义循环的起始位置默认为最小值所在的位置。
从起始位置的下一个位置开始循环,
如果有位置上的数值小于索引位置上的数值,就存储这个位置上的索引值
循环结束,比较存储的索引,是否是起始位置索引
如果不是,就交换两个位置上的数值,会将本次循环的最小值,放置在循环的起始位置上。
在执行多次循环,完成排序。
3>下面我们来通过代码来具体了解一下选择排序
eg. var arr=[3,44,38,5,47,25,36,2,79,8,1]使用选择排序来进行排序
首先,我们分为两层循环。
外层循环:先默认起始位置就是最小值顺序,存储起始位置的索引,也就是j。
代码如下:
内层循环:如果有单元的数值,小于存储的索引对应的数值,变量中,存储当前较小值的索引下标。
代码如下:
内层循环结束完毕后,存储的索引下表如果不是起始的索引j,就交换 min中存储的对应数值和j索引下标对应的数值
代码如下:
然后输出 代码如下:
最后进行代码的优化:
外层优化:之前比较出的数值,不参与下一次的比较。
代码如下:
内层优化:从起始位置下一个位置开始循环。
代码如下:
最后附上完整的的代码:
以上就是我的所有总结
------------恢复内容结束------------