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 相关文章推荐
javscript对象原型的一些看法
Sep 19 Javascript
js验证是否为数字的总结
Apr 14 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
Nov 19 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 Javascript
JavaScript对数组进行随机重排的方法
Jul 22 Javascript
js实现超简单的展开、折叠目录代码
Aug 28 Javascript
Javascript实现的简单右键菜单类
Sep 23 Javascript
浅谈js for循环输出i为同一值的问题
Mar 01 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
Sep 28 Javascript
微信小程序-getUserInfo回调的实例详解
Oct 27 Javascript
canvas绘制爱心的几种方法总结(推荐)
Oct 31 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
Nov 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
PHP简单日历实现方法
2016/07/20 PHP
php实现数字补零的方法总结
2018/09/12 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
详解django三种文件下载方式
2018/04/06 Python
django+mysql的使用示例
2018/11/23 Python
python 读取数据库并绘图的实例
2019/12/03 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
取保候审保证书
2014/04/30 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
竞聘书的秘诀
2019/04/02 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
Nginx配置https的实现
2021/11/27 Servers