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 上传图片预览问题
Dec 06 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
Jun 14 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
jQuery基础知识点总结(DOM操作)
Jun 01 Javascript
BootStrapTable服务器分页实例解析
Dec 20 Javascript
jquery实现图片跟随鼠标的实例
Oct 17 jQuery
微信小程序switch开关选择器使用详解
Jan 31 Javascript
vue导出html、word和pdf的实现代码
Jul 31 Javascript
vue构建动态表单的方法示例
Sep 22 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
vue data引入本地图片的两种方式小结
Nov 13 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中计算字符串相似度的函数代码
2012/12/29 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
php提高网站效率的技巧
2015/09/29 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
高级3D打印市场:Gambody
2019/12/26 全球购物
财务人员求职自荐书范文
2014/02/10 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
科技馆观后感
2015/06/08 职场文书
同事去世追悼词
2015/06/23 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书