js排序算法详解-选择排序
全栈工程师开发手册 (作者:栾鹏)
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排序算法详解-选择排序相关推荐
- js排序算法详解-桶排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-桶排序 一看到这个名字就会觉得奇特,几个意思,我排序还要再准备几个桶不成?还真别说,想用桶排序还得真准备几个桶 ...
- js排序算法详解-计数排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-计数排序 计数排序就是遍历数组记录数组下的元素出现过多次,然后把这个元素找个位置先安置下来,简单点说就是以原数 ...
- js排序算法详解-希尔排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-希尔排序 希尔排序,直接上图: 像这个算法看图理解起来并不是很难,就像比赛一样,1-6一组,2-7一组,每差5 ...
- C语言中数组的排序算法详解——选择法、冒泡法、交换法、插入法、折半法
选择法排序 选择法排序是指:如果要把一个数组从小到大排列,那么就从该数组中依次选择最小的数字来排序.从第一个数字开始,将第一个数字与数组中剩下数字中最小的那一个交换位置,然后将第二个数字与剩下数字中最 ...
- 数据结构 7 基础排序算法详解 鸡尾酒排序法、了解钟摆排序实现
前言 上节,我们已经通过对冒泡算法的优化.能够达到我们预想的结果.比较次数的减少.本节将继续在冒泡排序的基础上进行优化.能够达到刚好的效果. 鸡尾酒排序
- JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)
JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...
- js排序算法详解-快速排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-快速排序 既然是快速排序,那顾名思义一定很快,快的连小编都被懵逼了好几圈!建议先不要看动图,先看第一种写法: ...
- js排序算法详解-冒泡排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-冒泡排序 1.1 原始人冒泡排序 function bubbleSort(arr) {var len = ar ...
- js排序算法详解-归并排序
js系列教程5-数据结构和算法全解 js排序算法详解-归并排序 归并排序其实可以类比二分法,二分法其实就是二等分的意思,简而言之就是不断和新序列的中间值进行比较.归并排序似乎有异曲同工之妙,什么意思呢 ...
最新文章
- cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题
- 常用正则表达式总结(js与C#对照)
- [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
- 移动前端—H5实现图片先压缩再上传
- 怎么通过media foundation将图像数据写入虚拟摄像头_千倍成本压缩!特斯拉开发虚拟激光雷达,替代最贵自动驾驶传感器...
- [Godot] v4.0.alpha1 GDScript 实现第三人称控制器
- Wireshark 抓包
- Wampserver_开启CURL
- 微软最近宣布了一项政策更新,将限制在Office 365中使用Flash,Shockwave和Sil
- npy文件的处理方式
- 软件工程导论习题集 | 170道选择 | 50道填空 | 40道简答 | 其他试卷资源
- ROS配置ipv6方法
- df.to_csv输出结果隔行多一个空行的解决办法
- 计算机键盘灯光怎么关闭,如何关闭机械键盘的灯[图形介绍]
- typora修改主题字体、代码块字体、行内块代码字体大小、引用块字体大小、代码块背景颜色、文章可写区域宽度以及修改教程
- 发表16篇Nature、14篇Science!这位顶尖学者告诉你论文十大诀窍
- Python3 实现简易局域网视频聊天工具
- 大一学生接触人工智能的路程
- 邮箱的规则、正则表达式【亲测有效】
- VMD确定分解个数K(matlab)