1.冒泡排序

作为最简单的排序算法之一,冒泡排序的思想是,从左到右依次比较两个存储数据的大小,如果第一个数大于第二个数,就交换两个数据,这样一轮比较之后,最大的数会放在后面,这样,每次循环比较,本轮中的最大值都会排到最后,直到循环结束,实现数组升序。

动图演示如下:

 

javascript 冒泡排序 js中冒泡排序_冒泡排序

代码如下:

javascript 冒泡排序 js中冒泡排序_冒泡排序_02

 

首先定义外层循环,如果有n个数据进行循环比较,最后一次循环排序,最后两个值的大小已经确定,所以最后一个数值不需要参与循环,即n-1次,这里就是(arr.length-1) -1次;

定义内层循环,当前位i和i+1进行比较,当前循环的最后一位,只需要通过跟前一位比较即可,不需要参与循环,次数减1,而且每循环1次,排出的最大值都不需要再参与下次的循环,循环j次,可以排列出j个数,所以内循环循环的次数为(arr.length-1) -1 - j;若当前位数据大于下一位,即交换数据,用if判断。最后控制台输出查看。

 

2.选择排序

选择排序,是从起始位置开始,找最小的数值所在的索引,如果最终存储的索引不是起始位置,就与起始位置交换存储数据,每执行一次循环,会将最小值存储在起始位置上。

动图演示如下:

javascript 冒泡排序 js中冒泡排序_javascript 冒泡顺序_03

 

 

代码如下:

 

javascript 冒泡排序 js中冒泡排序_数据_04

 

 

同样,先定义外层循环,实现排序循环次数,次数是单元个数 -1,即arr.length-1 -1;

定义内层循环,先默认起始位置就是最小值位置,存储起始位置的索引,也就是arr.length-1;用if进行数据大小的判断,若j>j+1,则存储j+1位的索引,即min=i;最后通过判断存储的索引如果不是最开始存储的j,则交换存储的数据。

 

冒泡排序和选择排序是排序算法的其中两种。

在执行上,冒泡排序,每发生一次大小顺序问题,就交换一次数据;选择排序发生大小问题时,只是做赋值索引的操作,循环结束,才发生一次交换数据的操作。

冒泡排序执行数据交换的操作比较繁琐,执行效率低于选择排序。