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 相关文章推荐
动态加载iframe
Jun 16 Javascript
情人节之礼 js项链效果
Feb 13 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
Apr 01 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
Dec 26 Javascript
带你了解session和cookie作用原理区别和用法
Aug 14 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
Angular2学习笔记之数据绑定的示例代码
Jan 03 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
Jul 11 Javascript
JS查找孩子节点简单示例
Jul 25 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
phpmail类发送邮件函数代码
2012/02/20 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
JavaScript DOM节点添加示例
2014/07/16 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
微信小程序开发探究
2016/12/27 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
Vue filters过滤器的使用方法
2017/07/14 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
Python输入二维数组方法
2018/04/13 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
python实现机器学习之多元线性回归
2018/09/06 Python
python 美化输出信息的实例
2018/10/15 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
Python如何在DataFrame增加数值
2020/02/14 Python
客户表扬信范文
2014/01/10 职场文书
读书活动实施方案
2014/03/10 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2014年环保工作总结
2014/11/26 职场文书
关于长城的导游词
2015/01/30 职场文书
入党自荐书范文
2015/03/05 职场文书
篮球拉拉队口号
2015/12/25 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
python playwrigh框架入门安装使用
2022/07/23 Python