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 replace(rgExp,fn)正则替换的用法
Mar 04 Javascript
Javascript玩转继承(一)
May 08 Javascript
javascript中函数作为参数调用的方法
Feb 09 Javascript
JavaScript基础篇(6)之函数表达式闭包
Dec 11 Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 Javascript
Ajax验证用户名或昵称是否已被注册
Apr 05 Javascript
vue :src 文件路径错误问题的解决方法
May 15 Javascript
详解.vue文件解析的实现
Jun 11 Javascript
Vue.js实现开发购物车功能的方法详解
Feb 22 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
Sep 11 Javascript
vue中的计算属性和侦听属性
Nov 06 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
PHP4实际应用经验篇(8)
2006/10/09 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
vue组件生命周期详解
2017/11/07 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python使用tkinter实现简单计算器
2018/01/30 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
Python3标准库总结
2019/02/19 Python
python修改文件内容的3种方法详解
2019/11/15 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
会计顶岗实习心得
2014/01/25 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
参赛口号
2014/06/16 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
活动总结新闻稿
2014/08/30 职场文书
小学优秀学生评语
2014/12/29 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Python基础之pandas数据合并
2021/04/27 Python
Python机器学习之KNN近邻算法
2021/05/14 Python