码迷,mamicode.com
首页 > 编程语言 > 详细

JS中的冒泡排序与选择排序

时间:2020-03-21 23:44:40      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:http   而且   冒泡   一次循环   style   sans   依次   com   次数   

1.冒泡排序

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

动图演示如下:

 

技术图片

代码如下:

技术图片

 

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

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

 

2.选择排序

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

动图演示如下:

技术图片
 
 
代码如下:
 
技术图片

 

 

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

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

 

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

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

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

 

 

 

 

 

 

 

 

JS中的冒泡排序与选择排序

标签:http   而且   冒泡   一次循环   style   sans   依次   com   次数   

原文地址:https://www.cnblogs.com/si-si7/p/12542280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!