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 相关文章推荐
jQuery toggleClass应用实例(附效果图)
Apr 06 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
Feb 25 Javascript
Jquery技巧(必须掌握)
Mar 16 Javascript
Vue.js基础知识汇总
Apr 27 Javascript
详解vue渲染从后台获取的json数据
Jul 06 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
vue 兄弟组件的信息传递的方法实例详解
Aug 30 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
ant-design-vue按需加载的坑的解决
May 14 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
详解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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
python&amp;MongoDB爬取图书馆借阅记录
2016/02/05 Python
详解python中sort排序使用
2019/03/23 Python
Python读写文件基础知识点
2019/06/10 Python
python numpy实现rolling滚动案例
2020/06/08 Python
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
招商经理岗位职责
2013/11/16 职场文书
优秀中专生推荐信
2013/11/17 职场文书
采购主管工作职责
2013/12/12 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
Python time库的时间时钟处理
2021/05/02 Python
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python