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作用域链示例分享
May 27 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 Javascript
JavaScript中的splice()方法使用详解
Jun 09 Javascript
JavaScript实现函数返回多个值的方法
Jun 09 Javascript
jQuery unbind()方法实例详解
Jan 19 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 Javascript
Vue 表单控件绑定的实现示例
Aug 11 Javascript
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
用Vue.js方法创建模板并使用多个模板合成
Jun 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
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
python 图片验证码代码分享
2012/07/04 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
python操作yaml说明
2020/04/08 Python
python爬虫容易学吗
2020/06/02 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
高中的自我鉴定
2013/12/16 职场文书
民事和解协议书格式
2014/11/29 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python