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 this 和 $(this) 的区别
Aug 23 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
Oct 14 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
Jul 09 Javascript
JS中操作JSON总结
Dec 06 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
jquery预加载图片的方法
May 27 Javascript
JS判断iframe是否加载完成的方法
Aug 03 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
Vue-cli中为单独页面设置背景色的实现方法
Feb 11 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
jquery isType() 类型判断代码
2011/02/14 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
浅析Ajax语法
2016/12/05 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
python实现简单的TCP代理服务器
2014/10/08 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
益模软件Java笔试题
2012/03/27 面试题
违反课堂纪律检讨书
2014/01/19 职场文书
机关办公室岗位职责
2014/04/16 职场文书
体育馆的标语
2014/06/24 职场文书
施工安全责任书范本
2014/07/24 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
公司出差管理制度范本
2015/08/05 职场文书
2015年度女工工作总结
2015/10/22 职场文书
js 实现验证码输入框示例详解
2022/09/23 Javascript