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实现ASP分页函数 HTML分页函数
Sep 22 Javascript
不用写JS也能使用EXTJS视频演示
Dec 29 Javascript
10款非常有用的 Ajax 插件分享
Mar 14 Javascript
javascript实现信息增删改查的方法
Jul 25 Javascript
vue2.0模拟锚点的实例
Mar 14 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
Jul 06 Javascript
20个必会的JavaScript面试题(小结)
Jul 02 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
Vue数字输入框组件使用方法详解
Feb 10 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 Javascript
OpenLayer学习之自定义测量控件
Sep 28 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 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使用者状态管理功能的应用
2006/10/09 PHP
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
中止javascript执行的方法
2014/02/14 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
微信小程序 图片边框解决方法
2017/01/16 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
三星美国官网:Samsung美国
2017/02/06 全球购物
什么是索引指示器
2012/08/20 面试题
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
公司委托书范本
2014/04/04 职场文书
感恩的演讲稿
2014/05/06 职场文书
实验室的标语
2014/06/20 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
python内置进制转换函数的操作
2021/06/02 Python
深入理解python协程
2021/06/15 Python
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python