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 相关文章推荐
仿百度联盟对联广告实现代码
Aug 30 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
JS实现的车标图片提示效果代码
Oct 10 Javascript
Angularjs 滚动加载更多数据
Mar 17 Javascript
jquery.Callbacks的实现详解
Nov 30 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
Dec 08 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
Angularjs的键盘事件的绑定
Jul 27 Javascript
基于React Native 0.52实现轮播图效果
Aug 25 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
Apr 08 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
JavaScript实现HSL拾色器
May 21 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中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python设计模式之门面模式简单示例
2018/01/09 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Django values()和value_list()的使用
2020/03/31 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
建筑专业自我鉴定
2013/10/22 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
社区党支部承诺书
2015/04/29 职场文书
python 网络编程要点总结
2021/06/18 Python