全栈工程师开发手册 (作者:栾鹏)

js系列教程5-数据结构和算法全解

js排序算法详解-选择排序

相对于冒泡排序还有一种类似的方法就是选择排序,顾名思义就是选择性排序,什么意思呢?

这么来理解,假设在三伏天有一趟室内游泳课,教练说了先在露天场地等着,从你们当中先选取最大个先进去,然后再从剩余的人中选择最大个进去,依次类推。那么小个的就在想了,教练你TMD的脑子是不是被驴踢了。但是如果是冒泡排序那更有意思了,所有的人先排好队再进去,这样还好一点最起码每个人的心理能平衡一点。简单理解选择排序就是从一个未知数据空间,选取数据之最放到一个新的空间。

废话不多说,看例子:

2.1选择排序

function selectionSort(arr) {var len = arr.length;var minIndex, temp;console.time('选择排序耗时');for (var i = 0; i < len - 1; i++) {minIndex = i;for (var j = i + 1; j < len; j++) {if (arr[j] < arr[minIndex]) { //寻找最小的数minIndex = j; //将最小数的索引保存}}temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}console.timeEnd('选择排序耗时');return arr;
}
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(selectionSort(arr));//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50];

经小编测试,选择排序似乎比冒泡排序的自创版还要省时间,其实选择排序适合小数据排序,具体这个小数据有多小呢,简单的测试了一下,在1000条以内的数据,选择排序更胜1.3冒泡排序。

选择排序动图

js排序算法详解-选择排序相关推荐

  1. js排序算法详解-桶排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-桶排序 一看到这个名字就会觉得奇特,几个意思,我排序还要再准备几个桶不成?还真别说,想用桶排序还得真准备几个桶 ...

  2. js排序算法详解-计数排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-计数排序 计数排序就是遍历数组记录数组下的元素出现过多次,然后把这个元素找个位置先安置下来,简单点说就是以原数 ...

  3. js排序算法详解-希尔排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-希尔排序 希尔排序,直接上图: 像这个算法看图理解起来并不是很难,就像比赛一样,1-6一组,2-7一组,每差5 ...

  4. C语言中数组的排序算法详解——选择法、冒泡法、交换法、插入法、折半法

    选择法排序 选择法排序是指:如果要把一个数组从小到大排列,那么就从该数组中依次选择最小的数字来排序.从第一个数字开始,将第一个数字与数组中剩下数字中最小的那一个交换位置,然后将第二个数字与剩下数字中最 ...

  5. 数据结构 7 基础排序算法详解 鸡尾酒排序法、了解钟摆排序实现

    前言 上节,我们已经通过对冒泡算法的优化.能够达到我们预想的结果.比较次数的减少.本节将继续在冒泡排序的基础上进行优化.能够达到刚好的效果. 鸡尾酒排序

  6. JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)

    JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...

  7. js排序算法详解-快速排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-快速排序 既然是快速排序,那顾名思义一定很快,快的连小编都被懵逼了好几圈!建议先不要看动图,先看第一种写法: ...

  8. js排序算法详解-冒泡排序

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-冒泡排序 1.1 原始人冒泡排序 function bubbleSort(arr) {var len = ar ...

  9. js排序算法详解-归并排序

    js系列教程5-数据结构和算法全解 js排序算法详解-归并排序 归并排序其实可以类比二分法,二分法其实就是二等分的意思,简而言之就是不断和新序列的中间值进行比较.归并排序似乎有异曲同工之妙,什么意思呢 ...

最新文章

  1. cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题
  2. 常用正则表达式总结(js与C#对照)
  3. [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
  4. 移动前端—H5实现图片先压缩再上传
  5. 怎么通过media foundation将图像数据写入虚拟摄像头_千倍成本压缩!特斯拉开发虚拟激光雷达,替代最贵自动驾驶传感器...
  6. [Godot] v4.0.alpha1 GDScript 实现第三人称控制器
  7. Wireshark 抓包
  8. Wampserver_开启CURL
  9. 微软最近宣布了一项政策更新,将限制在Office 365中使用Flash,Shockwave和Sil
  10. npy文件的处理方式
  11. 软件工程导论习题集 | 170道选择 | 50道填空 | 40道简答 | 其他试卷资源
  12. ROS配置ipv6方法
  13. df.to_csv输出结果隔行多一个空行的解决办法
  14. 计算机键盘灯光怎么关闭,如何关闭机械键盘的灯[图形介绍]
  15. typora修改主题字体、代码块字体、行内块代码字体大小、引用块字体大小、代码块背景颜色、文章可写区域宽度以及修改教程
  16. 发表16篇Nature、14篇Science!这位顶尖学者告诉你论文十大诀窍
  17. Python3 实现简易局域网视频聊天工具
  18. 大一学生接触人工智能的路程
  19. 邮箱的规则、正则表达式【亲测有效】
  20. VMD确定分解个数K(matlab)

热门文章

  1. 百度AI语音语义一体化技术 识别的同时进行语义分析
  2. 连续数字及数字串识别技术
  3. Temporal注解笔记
  4. 原生js实现一个随机点餐的小效果
  5. echarts图表随着窗口大小改变自刷新问题解决
  6. java面向对象相关选择题_java面向对象练习题一
  7. android webview 设置cookie时间,解决Android webview设置cookie和cookie丢失的问题
  8. Oracle优化避免索引失效
  9. ArrayList中remove()方法删除元素之后下标重定位的问题
  10. linux系统编程shell,Linux系统中的 Shell 编程