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实现上传图片前的预览(TX的面试题)
Aug 20 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
Aug 27 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
微信小程序开发(二)图片上传+服务端接收详解
Jan 11 Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 Javascript
优雅的elementUI table单元格可编辑实现方法详解
Dec 23 Javascript
vue-for循环嵌套操作示例
Jan 28 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 Javascript
基于JavaScript获取url参数2种方法
Apr 17 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.MVC的模板标签系统(一)
2006/09/05 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
Python中的高级数据结构详解
2015/03/27 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
python 模拟登录B站的示例代码
2020/12/15 Python
2014年自我评价
2014/01/04 职场文书
后进生评语大全
2015/01/04 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL