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基本对象
Jan 11 Javascript
关于document.cookie的使用javascript
Apr 11 Javascript
jQuery 技巧大全(新手入门篇)
May 12 Javascript
JavaScript前端图片加载管理器imagepool使用详解
Dec 29 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
Bootstrop实现多级下拉菜单功能
Nov 24 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
Jun 06 Javascript
element-ui中select组件绑定值改变,触发change事件方法
Aug 24 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 27 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
Aug 12 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
php数组分页实现方法
2016/04/30 PHP
php 猴子摘桃的算法
2017/06/20 PHP
js鼠标左右键 键盘值小结
2010/06/11 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python解析xml模块封装代码
2014/02/07 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
Python同时处理多个异常的方法
2020/07/28 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
事业单位分类改革实施方案
2014/03/21 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
八一建军节主持词
2015/07/01 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
python图像处理 PIL Image操作实例
2022/04/09 Python
vue动态绑定style样式
2022/04/20 Vue.js