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的几种方法
Oct 23 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
前后台交互过程中json格式如何解析以及如何生成
Dec 26 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
详解Javascript函数声明与递归调用
Oct 22 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
Oct 26 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 Javascript
vue中的router-view组件的使用教程
Oct 23 Javascript
vue中使用v-model完成组件间的通信
Aug 22 Javascript
Vue实现点击导航栏当前标签后变色功能
Aug 19 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
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性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
python添加菜单图文讲解
2019/06/04 Python
python读取与处理netcdf数据方式
2020/02/14 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
简历的自我评价
2014/02/03 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
教室布置标语
2014/06/26 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
谢师宴邀请函
2015/02/02 职场文书
保送生自荐信
2015/03/06 职场文书
2015年组织部工作总结
2015/04/03 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript