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 相关文章推荐
Javascript代码混淆综合解决方案-Javascript在线混淆器
Dec 18 Javascript
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
javascript匀速动画和缓冲动画详解
Oct 20 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 Javascript
JS图片预加载插件详解
Jun 21 Javascript
ES6学习教程之块级作用域详解
Oct 09 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
如何测量vue应用运行时的性能
Jun 21 Javascript
微信小程序静默登录的实现代码
Jan 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 学习路线与时间表
2010/02/21 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php简单的上传类分享
2016/05/15 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
Python字典对象实现原理详解
2019/07/01 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
结婚典礼证婚词
2014/01/11 职场文书
团组织关系介绍信
2014/01/12 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
垃圾桶标语
2014/06/24 职场文书
个人委托书范本
2014/09/13 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
学校食品安全责任书
2015/01/29 职场文书
2015年暑假工作总结
2015/07/13 职场文书
python某漫画app逆向
2021/03/31 Python
redis中lua脚本使用教程
2021/11/01 Redis
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL