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 相关文章推荐
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
JS截取字符串常用方法详细整理
Oct 28 Javascript
Javascript基础教程之函数对象和属性
Jan 18 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
JavaScript 性能优化小结
Oct 12 Javascript
原生js仿浏览器滚动条效果
Mar 02 Javascript
微信小程序之购物车功能
Sep 23 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
May 28 Javascript
pageGroup.js实现分页功能
Jul 27 Javascript
解决vue项目运行npm run serve报错的问题
Oct 26 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
DIY实用性框形天线
2021/03/02 无线电
PHP 柱状图实现代码
2009/12/04 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
php事务处理实例详解
2014/07/11 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
Python魔术方法详解
2015/02/14 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
python3 下载网络图片代码实例
2019/08/27 Python
python config文件的读写操作示例
2019/09/27 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
介绍一下write命令
2014/08/10 面试题
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
营销主管自我评价怎么写
2013/09/19 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
总经理工作职责范文
2014/03/14 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
股指期货心得体会
2014/09/10 职场文书
运动会开幕词
2015/01/28 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
Python中rapidjson参数校验实现
2021/07/25 Python
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL