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 相关文章推荐
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
取得元素的左和上偏移量的方法
Sep 17 Javascript
JavaScript学习笔记之JS对象
Jan 22 Javascript
jQuery实现跨域
Feb 03 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
jQuery动态生成Bootstrap表格
Nov 01 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 Javascript
Web纯前端“旭日图”实现元素周期表
Mar 10 Javascript
移动端利用H5实现压缩图片上传功能
Mar 29 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
Vue多选列表组件深入详解
Mar 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/02/15 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
php里array_work用法实例分析
2015/07/13 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
整理Python最基本的操作字典的方法
2015/04/24 Python
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
详解Python打包分发工具setuptools
2019/08/05 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
医院护理人员的自我评价分享
2013/10/04 职场文书
学校后勤人员职责
2013/12/27 职场文书
家电业务员岗位职责
2014/03/10 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
民用住房租房协议书
2014/10/29 职场文书
婚庆答谢词大全
2015/09/29 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫