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 相关文章推荐
通过JavaScript控制字体大小的代码
Oct 04 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
JavaScript对HTML DOM使用EventListener进行操作
Oct 21 Javascript
微信小程序  生命周期详解
Oct 27 Javascript
详谈js中window.location.search的用法和作用
Feb 13 Javascript
微信小程序 图片绝对定位(背景图片)
Apr 05 Javascript
本地存储localStorage用法详解
Jul 31 Javascript
AjaxUpLoad.js实现文件上传功能
Mar 02 Javascript
详解小程序原生使用ES7 async/await语法
Aug 06 Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 Javascript
js实现无缝轮播图插件封装
Jul 31 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
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
SONY ICF-F10中波修复记
2021/03/02 无线电
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
jQuery拖动图片删除示例
2013/05/10 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
vuejs指令详解
2017/02/07 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python IDLE入门简介
2017/12/08 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
python中对_init_的理解及实例解析
2019/10/11 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
打架检讨书800字
2014/01/10 职场文书
教育技术职业规划范文
2014/03/04 职场文书
会计稽核岗位职责
2015/04/13 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python