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 new 需不需要继续使用
Jul 02 Javascript
javascript实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
JS链式调用的实现方法
Mar 07 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
JS简单添加元素新节点的方法示例
Feb 10 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
JavaScript实现单图片上传并预览功能
Sep 30 Javascript
react实现移动端下拉菜单的示例代码
Jan 16 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的session功能评述(一)
2006/10/09 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
详解vue v-model
2020/08/31 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
Python 操作 MySQL数据库
2020/09/18 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
党的群众路线调研报告
2014/11/03 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
2014公司年终工作总结
2014/12/19 职场文书
民主评议党员个人总结
2015/02/13 职场文书
小学班级管理心得体会
2016/01/07 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
创业计划书之旅游网站
2019/09/06 职场文书