ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JS排序算法--冒泡排序和选择排序

2020-03-22 15:03:03  阅读:201  来源: 互联网

标签:JS 起始 冒泡排序 内层 索引 循环 数值 排序


  在我们JS语法当中,数据类型中的复杂数据类型,有一项我们常用的数组数据类型,其中存储的数据有时是乱序的,需要排序,我们有多种方法,最简单的肯定是 :变量.sort(fonction(a,b){a>b})这种方法。然而我这里讲到的是另外两种手写算法来排序的。

  冒泡排序,是通过for每次循环,来找到一个最大值,多次循环来确定数组排序,咋们来看具体代码实现,在讲解 

  这里咋们看到是分为外层循环与内层循环的,外层循环是为了执行循环次数,内层循环是为了每一次执行的数据与其他数据的对比比较循环。通过索引下标来控制循环的最大值,也就是arr.length,内层循环中嵌套一层if判断语句,看两个数据之间的大小,如果前一个比后一个大,那么就行数据互换操作,这里需要注意的是,需要添加一个变量来进行中间互换,否则数据是互换不了的。

  另外则是这里的代码是进行了一定优化的,加快程序的执行效率,减少执行次数,

  外层循环如果有n个单元参加排序,那么只需要循环n-1次即可,而最后一个单元时是不需要进行比较循环排序的,其他的排序好,那么这个就自动排序好的,所以循环最大值是(arr.length-1) -1;

  内层循环是上一次参与循环,已经决定出来的最大数值,不用参与下一次循环, 第一次排序,少0个单元参与,第二次排序,少1个单元参与,第三次排序,少2个单元参与........通过外层循环变量,定义是从 0 开始的循环数值,每次内层循环,次数,再减去 外层循环变量 的数值,也就是(arr.length-1) -1 - j;

  选择排序,也就是从起始位置寻找最小值的索引下标。如果最终存储的索引下标不是最初设定的起始位置,那就交互存储数据

  

 

  这里代码执行的原理顺序是,外层循环:实现循环次数,是数组单元个数-1;内层循环:每次循环,将本次循环找出来的最小值,与起始位置进行数值交换,先默认起始位置的数值为最小值,存储起始位置的索引值,之后从起始位置的下一个位置开始循环,生成之后的所有索引下标,如果之后位置上的数值,小于存储的索引位置的数值,就存储这个数值的索引,循环结束,变量中存储本次内层循环选择出的最小值的索引下标,进行比较判断,如果这个索引值,不是起始索引值,就交换两个索引值对应的数据。     而程序优化的部分则是和冒泡排序相对相同,外层优化:之前比较出的数值,不参与下一次的比较,内层优化:从起始位置的下一个位置开始循环。      最后提到的是,这两种方法其实在实际开发当中用处并不大,但是对于编程人员的思维逻辑锻炼还是有一定益处的,谢谢大家!                  

 

                                                                                        

 

 

标签:JS,起始,冒泡排序,内层,索引,循环,数值,排序
来源: https://www.cnblogs.com/icon-JIA/p/12546010.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有