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 相关文章推荐
ASP.NET中AJAX 调用实例代码
May 03 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
Aug 05 Javascript
jQuery中insertBefore()方法用法实例
Jan 08 Javascript
PHP获取当前页面完整URL的方法
Dec 02 Javascript
js实现一键复制功能
Mar 16 Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 Javascript
微信小程序页面开发注意事项整理
May 18 Javascript
bootstrap模态框远程示例代码分享
May 22 Javascript
vue表单数据交互提交演示教程
Nov 13 Javascript
JS中准确判断变量类型的方法
Jun 01 Javascript
vue中touch和click共存的解决方式
Jul 28 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
Nov 03 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
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python 拼接文件路径的方法
2018/10/23 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
学习雷锋精神心得体会范文
2014/03/12 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
代收款委托书范本
2014/10/01 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
导游词之麻姑仙境
2019/11/18 职场文书