大家好,我是H5 逆战班的学员,这周是学习JavaScript的第二周,我来做一下总结,冒泡排序 跟 选择排序

------------恢复内容开始------------

              冒泡排序 跟 选择排序

冒泡排序:

 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索引下标对应的数值

代码如下:

然后输出 代码如下:

最后进行代码的优化:

外层优化:之前比较出的数值,不参与下一次的比较。

 

代码如下:

内层优化:从起始位置下一个位置开始循环。

代码如下:

 

最后附上完整的的代码:

 以上就是我的所有总结

------------恢复内容结束------------

猜你喜欢

转载自www.cnblogs.com/SHY1214/p/12573628.html