JS排序之选择排序详解


Posted in Javascript onApril 08, 2017

本文为大家分享了JS选择排序的具体代码,供大家参考,具体内容如下

说明

  • 时间复杂度指的是一个算法执行所耗费的时间
  • 空间复杂度指运行完一个程序所需内存的大小
  • 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面
  • 不稳定指,如果a=b,a在b的前面,排序后可能会交换位置

--JS选择排序--

原理

首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,知道排序完毕。

时间复杂度,空间复杂度,稳定性

  • 平均时间复杂度O(n*n)
  • 最好情况O(n*n)
  • 最差情况O(n*n)
  • 空间复杂度O(1)
  • 稳定性:不稳定

选择排序的写法

var example=[8,94,15,88,55,76,21,39];
function selectSort(arr){
 var len=arr.length;
 var minIndex,temp;
 console.time('选择排序耗时');
 for(i=0;i<len-1;i++){
  minIndex=i;
  for(j=i+1;j<len;j++){
   if(arr[j]<arr[minIndex]){
    minIndex=j;
   }
  }
 temp=arr[i];
 arr[i]=arr[minIndex];
 arr[minIndex]=temp;
 }
 console.timeEnd('选择排序耗时');
 return arr;
}
console.log(selectSort(example));

解析

minIndex始终保存着最小值的位置的索引,随着i的自增,遍历的数组长度越来越短,直到完成排序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 表格操作(交替显示、拖动表格行、选择行等)
Jul 29 Javascript
javascript 必知必会之closure
Sep 21 Javascript
javascript dom 基本操作小结
Apr 11 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
图解prototype、proto和constructor的三角关系
Jul 31 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
详解Vue自定义过滤器的实现
Jan 10 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
Feb 10 Javascript
微信小程序 同步请求授权的详解
Aug 04 Javascript
Three.js入门之hello world以及如何绘制线
Sep 25 Javascript
JS实现倒计时图文效果
Nov 17 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
Aug 20 Javascript
Vue异步组件使用详解
Apr 08 #Javascript
利用jQuery解析获取JSON数据
Apr 08 #jQuery
AngularJS $http模块POST请求实现
Apr 08 #Javascript
node.js实现登录注册页面
Apr 08 #Javascript
详解vue2路由vue-router配置(懒加载)
Apr 08 #Javascript
js仿微信公众平台打标签功能
Apr 08 #Javascript
详解node.js搭建代理服务器请求数据
Apr 08 #Javascript
You might like
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python每天必学之bytes字节
2016/01/28 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
使用Python来开发微信功能
2018/06/13 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
美国玩具公司:U.S.Toy
2018/05/19 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
酒店副总岗位职责
2013/12/24 职场文书
数字化校园建设方案
2014/05/03 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
合同纠纷调解书
2015/05/20 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书