JavaScript实现经典排序算法之选择排序


Posted in Javascript onDecember 28, 2016

表现最稳定的排序算法之一,因为无论什么数据进去都是O(n²)的时间复杂度.....所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间。
1)算法原理

         先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

2)算法描述和实现

       n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:

      <1>初始状态:无序区为R[1..n],有序区为空;

      <2>第i趟排序(i=1,2,3...n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;

      <3>n-1趟结束,数组有序化了。

3)javascript代码实现

function selectSort(arr){ 
 var len = arr.length; 
 var index,temp; 
 for(var i = 0; i < len-1 ;i++){ 
  index = i; 
  for(var j = i + 1 ; j<len; j++){ 
   if(arr[j] < arr[index]){//寻找最小的数 
    index = j;//保存最小数的索引 
   } 
  } 
  temp = arr[i]; 
  arr[i] = arr[index]; 
  arr[index] = temp; 
 } 
 return arr; 
} 
 
var arr=[1,45,37,5,48,15,37,26,29,2,46,4,17,50,52]; 
console.log(selectSort(arr));

4)算法分析

       最佳情况:T(n) = O(n2)
       最差情况:T(n) = O(n2)
      平均情况:T(n) = O(n2)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
JS运动基础框架实例分析
Mar 03 Javascript
js+css简单实现网页换肤效果
Dec 29 Javascript
实例详解jQuery表单验证插件validate
Jan 18 Javascript
微信小程序 Page()函数详解
Oct 17 Javascript
jQuery使用正则验证15/18身份证的方法示例
Apr 27 jQuery
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
JS实现验证码倒计时的注册页面
Jan 02 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
websocket4.0+typescript 实现热更新的方法
Aug 14 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 #Javascript
JavaScript实现经典排序算法之冒泡排序
Dec 28 #Javascript
BootStrap Tooltip插件源码解析
Dec 27 #Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 #Javascript
javascript实现文字无缝滚动
Dec 27 #Javascript
JavaScript仿聊天室聊天记录
Dec 27 #Javascript
基于jQuery实现顶部导航栏功能
Dec 27 #Javascript
You might like
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
在视频前插入广告
2006/11/20 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
javascript实现动态标签云
2015/10/16 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
python global关键字的用法详解
2019/09/05 Python
Python实现打印实心和空心菱形
2019/11/23 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
荷兰电脑专场:Paradigit
2018/05/05 全球购物
通信专业个人自我鉴定
2013/10/21 职场文书
行政部岗位职责范本
2014/03/13 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
听课评语大全
2014/04/30 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
Pandas数据结构之Series的使用
2022/03/31 Python
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS