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扩展插件Validate—4设置错误提示的样式
Sep 05 Javascript
使用javascript过滤html的字符串(注释标记法)
Jul 08 Javascript
JavaScript中伪协议 javascript:使用探讨
Jul 18 Javascript
js简单实现标签云效果实例
Aug 06 Javascript
AngularJS入门教程之模块化操作用法示例
Nov 02 Javascript
详解webpack分包及异步加载套路
Jun 29 Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
详解微信小程序回到顶部的两种方式
May 09 Javascript
vue实现数字动态翻牌的效果(开箱即用)
Dec 08 Javascript
JS面向对象之多选框实现
Jan 17 Javascript
JavaScript实现通讯录功能
Dec 27 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
生成静态页面的PHP类
2006/11/25 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
php for 循环使用的简单实例
2016/06/02 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
Javascript 继承机制实例
2009/08/12 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
继续学习javascript闭包
2015/12/03 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
Python中的tuple元组详细介绍
2015/02/02 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
PyTorch中的Variable变量详解
2020/01/07 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
大客户销售经理职责
2013/12/04 职场文书
音乐教学随笔感言
2014/02/19 职场文书
结婚喜宴主持词
2014/03/14 职场文书
十佳护士先进事迹
2014/05/08 职场文书
环卫工人节活动总结
2014/08/29 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
大学生活感想
2015/08/10 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server