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 相关文章推荐
表单(FORM)的一些实用效果代码
Mar 25 Javascript
List the UTC Time on a Computer
Jun 11 Javascript
jQuery textarea的长度进行验证
May 06 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
vue调用高德地图实例代码
Apr 28 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
Jul 13 Javascript
详解vue中组件参数
Jul 09 Javascript
详解React服务端渲染从入门到精通
Mar 28 Javascript
Vue程序调试的方法
Jun 17 Javascript
简单了解JavaScript弹窗实现代码
May 07 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
php导入导出excel实例
2013/10/25 PHP
CI框架中zip类应用示例
2014/06/17 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python实现图片彩色转化为素描
2019/01/15 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
python获取linux系统信息的三种方法
2020/10/14 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
JNI的定义
2012/11/25 面试题
业务经理岗位职责
2013/11/11 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
小英雄雨来观后感
2015/06/09 职场文书
股东出资协议书
2016/03/21 职场文书