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 相关文章推荐
JavaScript的面向对象(二)
Nov 09 Javascript
javascript &amp;&amp;和||运算法的另类使用技巧
Nov 28 Javascript
javascript call方法使用说明
Jan 11 Javascript
JavaScript 代码压缩工具小结
Feb 27 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
javascript中直接引用Microsoft的COM生成Word
Jan 20 Javascript
js 调用百度地图api并在地图上进行打点添加标注
May 13 Javascript
PHP PDO操作总结
Nov 17 Javascript
Node.js的进程管理的深入理解
Jan 09 Javascript
vue数据初始化initState的实例详解
Apr 11 Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 Javascript
JavaScript相等运算符的九条规则示例详解
Oct 20 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
PHP中phar包的使用教程
2017/06/14 PHP
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python如何实现文本转语音
2016/08/08 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
用Python逐行分析文件方法
2019/01/28 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
Python实现序列化及csv文件读取
2020/01/19 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
干部现实表现材料
2014/02/13 职场文书
委托协议书范本
2014/04/22 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
勇敢的心观后感
2015/06/09 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang