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 相关文章推荐
学习YUI.Ext 第三天
Mar 10 Javascript
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
ext 代码生成器
Aug 07 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
Sep 13 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 Javascript
Angular.Js的自动化测试详解
Dec 09 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
Jan 13 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
May 09 Javascript
js实现三角形粒子运动
Sep 22 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
PHP脚本的10个技巧(4)
2006/10/09 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
符合标准的js表单提交的代码
2007/09/13 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
深入了解js原型模式
2019/05/30 Javascript
js常见遍历操作小结
2019/06/06 Javascript
Python编程实现的简单神经网络算法示例
2018/01/26 Python
python re模块的高级用法详解
2018/06/06 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
python批量爬取下载抖音视频
2019/06/17 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
python循环输出三角形图案的例子
2019/11/22 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
中学生学习保证书
2015/02/26 职场文书
村官个人总结范文
2015/03/03 职场文书
2019求职信大礼包
2019/05/15 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP