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 相关文章推荐
使用IE的地址栏来辅助调试Web页脚本
Mar 08 Javascript
IE和Firefox下event事件杂谈
Dec 18 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
vue.js学习之递归组件
Dec 13 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
vue component 中引入less文件报错 Module build failed
Apr 17 Javascript
layui-select动态选中值的例子
Sep 23 Javascript
js实现简单五子棋游戏
May 28 Javascript
微信小程序实现购物车功能
Nov 18 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
function.inc.php超越php
2006/12/09 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
python调用cmd复制文件代码分享
2013/12/27 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
Python中请不要再用re.compile了
2019/06/30 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
python实现3D地图可视化
2020/03/25 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
求职推荐信
2013/10/28 职场文书
跟单文员岗位职责
2014/01/03 职场文书
班主任评语大全
2014/04/26 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
个人安全生产承诺书
2014/05/22 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python
Redis+AOP+自定义注解实现限流
2022/06/28 Redis