JavaScript选择排序算法原理与实现方法示例


Posted in Javascript onAugust 06, 2018

本文实例讲述了JavaScript选择排序算法原理与实现方法。分享给大家供大家参考,具体如下:

一、选择排序简介

冒泡排序、插入排序、选择排序合称为简单排序。下面是选择排序的思想:

假设有一个数组a,我们想象成有一个班级名叫a班,现在全班随意排成一排,排头的位置是a[0],排尾的位置是a[a.length-1]。但高矮顺序不是有序的,我们想从矮到高排,排头最矮,排尾最高。

选择排序是这样工作的:

第一轮:

(1)a[1]位置队员与a[0]位置队员比较,如果比a[0]位置队员矮,就把a[1]的位置记住,如果不比a[0]队员矮,就把a[0]位置记住,记住位置的队员是目前已知最矮的;

(2)a[2]位置队员与记录位置队员比较,如果比记录位置队员矮,就把a[2]改为记录位置,如果不比记录位置队员矮则不改变记录位置,记录位置的队员是目前已知最矮的;

(3)a[3]位置队员与记录位置队员比较,如果比记录位置队员矮,就把a[3]改为记录位置,如果不比记录位置队员矮则不改变记录位置,记录位置的队员是目前已知最矮的;
······

以此类推,直到a[a.length-1]位置队员与记录位置队员比较完成,这样记录位置队员是所有队员中最矮的。

但是,我们知道最终要完成排序,最矮的肯定在a[0]位置,因此交换a[0]位置队员和记录位置队员。最矮的队员成功入坑a[0]号位!

第二轮:

重复第一轮的过程,只不过这次是从a[1]位置开始,依次比较,最终将记录位置队员放入a[1]。第二矮的队员成功入坑a[1]号位!

······
最后一轮:

a[a.length-2]位置开始依次比较,这时只剩a[a.length-2]a[a.length-1]还没有排好序,经过一次比较,就把第二高的队员放入了a[a.length-2]位置,a[a.length-1]位置队员肯定是最高的,排序完成。

二、JavaScript实现选择排序

function select_sort(arr) {
  var k;
  var temp;
  var l=arr.length;
  for (var i = 0; i < l-1; i++) {
    k=i;
    for (var j = i+1; j < l; j++) {
      if (arr[j]<arr[k]) {
        k=j;
      }
    }
    temp=arr[k];
    arr[k]=arr[i];
    arr[i]=temp;
  }
  return arr;
}
var a=[11,2,3,445,7,32,71,1,94];
console.log(select_sort(a));
var b=[94,11];
console.log(select_sort(b));

说明:

如果数组仅有一个元素,不会进入外层for循环,因而相当于没有进行任何操作,结果也是正确的。

上述代码使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun测试运行结果如下:

JavaScript选择排序算法原理与实现方法示例

Javascript 相关文章推荐
JS实现商品倒计时实现代码
May 03 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
Jul 02 Javascript
JS实现的Select三级下拉菜单代码
Aug 20 Javascript
jquery对复选框(checkbox)的操作汇总
Jan 13 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
Jun 12 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
微信小程序 图片宽度自适应的实现
Apr 06 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
Jun 20 jQuery
vue 点击按钮实现动态挂载子组件的方法
Sep 07 Javascript
layui实现tab的添加拒绝重复的方法
Sep 04 Javascript
vue-router的hooks用法详解
Jun 08 Javascript
ES6 中可以提升幸福度的小功能
Aug 06 #Javascript
原生JS实现的轮播图功能详解
Aug 06 #Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
Aug 06 #Javascript
animate.css在vue项目中的使用教程
Aug 05 #Javascript
iconfont的三种使用方式详解
Aug 05 #Javascript
vue-content-loader内容加载器的使用方法
Aug 05 #Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 #Javascript
You might like
php addslashes和mysql_real_escape_string
2010/01/24 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
Js获取事件对象代码
2010/08/05 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
Python 转换文本编码实现解析
2019/08/27 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
大学生个人事迹材料
2014/01/21 职场文书
写给老师的表扬信
2014/01/21 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
作文评语集锦大全
2014/04/23 职场文书
工作简历自我评价
2015/03/11 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
护理工作心得体会
2016/01/22 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS