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 相关文章推荐
学习YUI.Ext 第二天
Mar 10 Javascript
jquery div 居中技巧应用介绍
Nov 24 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
在web中js实现类似excel的表格控件
Sep 01 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
JS实现商品筛选功能
Aug 19 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
快速了解Node中的Stream流是什么
Feb 13 Javascript
JS中的一些常用的函数式编程术语
Jun 15 Javascript
JS实现音量控制拖动
Jan 15 Javascript
react 不用插件实现数字滚动的效果示例
Apr 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中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
python实现的jpg格式图片修复代码
2015/04/21 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
python组合无重复三位数的实例
2018/11/13 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
初中毕业生自我评价
2015/03/02 职场文书
解除处分决定书
2015/06/25 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server