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 相关文章推荐
(function($){...})(jQuery)的意思
Jul 22 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
js同比例缩放图片的小例子
Oct 30 Javascript
js 跳出页面的frameset框架示例介绍
Dec 23 Javascript
JavaScript、jQuery与Ajax的关系
Jan 24 Javascript
微信小程序如何获知用户运行小程序的场景教程
May 17 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
vue动态设置img的src路径实例
Sep 18 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
Nov 13 Javascript
图文详解vue框架安装步骤
Feb 12 Javascript
JS实现放烟花效果
Mar 10 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
全国中波电台频率表
2020/03/11 无线电
PHP中一个控制字符串输出的函数
2006/10/09 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
js实现分页功能
2017/05/24 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python实现感知机(PLA)算法
2017/12/20 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
python pandas模块基础学习详解
2019/07/03 Python
python中的colorlog库使用详解
2019/07/05 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
Java如何支持I18N?
2016/10/31 面试题
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
三人合伙协议书范本
2014/10/29 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
九九重阳节致辞
2015/07/31 职场文书
python某漫画app逆向
2021/03/31 Python
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python