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 相关文章推荐
js网页版计算器的简单实现
Jul 02 Javascript
JavaScript变量的作用域全解析
Aug 14 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
javascript实现在网页中运行本地程序的方法
Feb 03 Javascript
js导出excel文件的简洁方法(推荐)
Nov 02 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
Dec 19 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
Apr 26 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 Javascript
JS实现打砖块游戏
Feb 14 Javascript
在HTML中使用JavaScript的两种方法
Dec 24 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扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
Python连接数据库学习之DB-API详解
2017/02/07 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
美国精油公司:Plant Therapy
2019/05/17 全球购物
如何进行Linux分区优化
2013/02/12 面试题
解除财产保全担保书
2014/05/20 职场文书
售后服务承诺函格式
2015/01/21 职场文书
大学生党课感想
2015/08/11 职场文书
人民调解协议书
2016/03/21 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
浅谈JS的二进制家族
2021/05/09 Javascript
python实现会员信息管理系统(List)
2022/03/18 Python