本文实例总结了JS数组排序技巧。分享给大家供大家参考,具体如下:

1、冒泡排序

var temp = 0;
for (var i = 0; i < array.length; i++)
{
for (var j = 0; j < array.length - i; j++)
{
if (array[j] > array[j + 1])
{
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
console.log(array);

结果如下:

图片.png

2、sort排序

  var arrSimple=new Array(1,8,7,6,2,5);arrSimple.sort();// document.writeln(arrSimple.join());console.log(arrSimple.join())

效果如下:

图片.png

3、 快速排序

function quickSort(arr){  if(arr.length<=1){//如果数组只有一个数,就直接返回;  return arr;  }  var num=Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整  var newValue=arr.splice(num,1);//找到中间数的值  var left=[],right=[];  for(var i=0;i<arr.length;i++){  if(arr[i]<newValue){  left.push(arr[i]);//基准点的左边的数传到左边数组  }else{  right.push(arr[i]);//基准点的右边的数传到右边数组  }  }  return quickSort(left).concat(newValue,quickSort(right));//递归不断重复比较  }  console.log(quickSort([31,4,5,52,1,8]));

效果如图:

图片.png

4、希尔排序

function shellSort(nums){//希尔排序var gaps=[5,3,1];//定义间隔区间for(var g=0;g<gaps.length;g++){//一个一个间隔值开始for(var i=gaps[g];i<nums.length;i++){//以间隔值遍历var temp=nums[i];//选中元素for(var j=i;j>=gaps[g]&&nums[j-gaps[g]]>temp;j-=gaps[g]){//如果前面一个大于后面一个nums[j]=nums[j-gaps[g]];//后移}nums[j]=temp;//填补}}}function show(nums){//显示数组for(var i=0;i<nums.length;i++){document.write(nums[i]+' ');}document.write('<br>');}var nums=[6,0,2,9,3,5,8,0,5,4];show(nums);//6 0 2 9 3 5 8 0 5 4shellSort(nums);//希尔排序show(nums);//0 0 2 3 4 5 5 6 8 9

效果如图:

图片.png

5、插入排序

function sort(elements){//假设第0个元素是一个有序的数列,第1个以后的是无序的序列,//所以从第1个元素开始将无序数列的元素插入到有序数列中for(var i = 1; i < elements.length; i++){//升序if(elements[i] < elements[i-1]){//取出无序数列中的第i个作为被插入元素var guard = elements[i];//记住有序数列的最后一个位置,并且将有序数列位置扩大一个var j = i - 1;elements[i] = elements[j];//比大小,找到被插入元素所在的位置while(j >= 0 && guard < elements[j]){elements[j+1] = elements[j];j--;}//插入elements[j+1] = guard;}}
}var elements = [10, 9, 8, 7, 6, 5];
console.log('before: ' + elements);
sort(elements);
console.log(' after: ' + elements);

效果如图:

图片.png

6、选择排序:

function order(arry){var ary=arryfunction sorrt() {length = ary.length;for (var i = 0; i < length; i++) {_min = ary[i]k = ifor (var j = i + 1; j < length; j++) {if (_min > ary[j]) {_min = ary[j]k = j}}ary[k] = ary[i]ary[i] = _min}return ary;
}return {sor:sorrt};}var k=order([14,12,6,5,18,0,1,3,2])
console.log(k.sor())

效果如下:

图片.png

附:js中数组(Array)的排序(sort)注意事项

var arrDemo = new Array();
arrDemo[0] = 10;
arrDemo[1] = 50;
arrDemo[2] = 51;
arrDemo[3] = 100;
arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组
alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序
arrDemo.sort(function(a,b){return a>b?1:-1});//从小到大排序
alert(arrDemo);//10,50,51,100
arrDemo.sort(function(a,b){return a<b?1:-1});//从大到小排序
alert(arrDemo);//100,51,50,10

==================================================================
注意:本文原创作者祈澈姑娘,创作不易。转载请标明作者和文章的原文链接,或到微信公众号获取授权。

文末福利:

福利一:前端,Java,产品经理,微信小程序,Python等100G资源合集大放送:https://www.jianshu.com/p/e8197d4d9880

福利二:微信小程序入门与实战全套详细视频教程。

【领取方法】

关注 【编程微刊】微信公众号:

回复【小程序demo】一键领取130个微信小程序源码demo资源。

回复【领取资源】一键领取前端,Java,产品经理,微信小程序,Python等资源合集100G资源大放送。

转载于:https://www.cnblogs.com/ting6/p/9725529.html

JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)相关推荐

  1. 二维数组排序php array_work,Arrays.Sort()中的那些排序算法

    本文基于JDK 1.8.0_211撰写,基于java.util.Arrays.sort()方法浅谈目前Java所用到的排序算法,仅我的看法和笔记,如有问题欢迎指证,着重介绍其中的TimSort排序,其 ...

  2. 几种排序算法的比较(冒泡、快速、Shell排序)

    好程序员训练营 <A href="http://www.goodprogrammer.org/" target="blank">ios培训</ ...

  3. 八大排序算法:插入(2:插入、希尔)、选择(2:选择、堆)、交换(2:冒泡、快速)、归并、基数

    八大排序算法 发表于2012/7/23 16:45:18  662397人阅读 分类: c/c++ 数据结构与算法 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排 ...

  4. 排序算法整合(冒泡,快速,希尔,拓扑,归并)

    冒泡排序介绍 冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序. 它是一种较简单的排序算法.它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小:如果前者比后 ...

  5. js word 预览_干货!Word办公软件日常使用技巧汇总

    word作为公司必备的操作软件,是每一位职场人士必不可少的文档编辑软件,但是很少有人能把word的功能完全挖掘出来. 本期小编为大家整理了一篇word办公软件日常使用技巧汇总,告诉大家word最实用的 ...

  6. 冒泡和快速排序的时间复杂度_排序算法整合(冒泡,快速,希尔,拓扑,归并)

    本文链接:https://blog.csdn.net/onceing/article/details/99838520 冒泡排序介绍 冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序. ...

  7. html 引入js 兼容,JS跨浏览器兼容性解决思路及方案汇总,常见JS兼容性知识点汇总...

    上篇文章我们介绍了,处理CSS浏览器兼容性的4个解决方案:浏览器CSS样式初始化.浏览器私有属性,CSS hack语法和自动化插件,有兴趣的可以看看,链接放到本文结尾 本文主要介绍JS的跨浏览器兼容性 ...

  8. c#冒泡、快速、选择和插入排序算法的项目应用

    在之前的一篇文章里,我们简单地实现了对一维数组的四种排序算法,但是在实际的项目中,我们排序的方式可能(几乎是一定)不止仅仅按照数字排序.我们常常按照合适的需要的排序方式进行排序,比如航班信息可能按时间 ...

  9. ipadpro+打开html文件,iPadPro日常基本功能的使用技巧汇总

    iPadPro日常基本功能的使用技巧汇总今天来给大家分享一下了,苹果的iPadPro这款平板还是很实用的,而且还自带的手写笔,平时大家在使用这款iPadPro中肯定遇到了不少问题,下面小编就来分享一下 ...

最新文章

  1. “私有云”安全的“过渡”时期-“云朵”方案的设计思路
  2. java 模拟登陆web系统_关于java模拟登陆WEB的问题。
  3. python3 获取cpu 内存利用率
  4. spring 构造函数注入_Spring构造函数依赖注入示例
  5. 在mac os10.13系统下 ,将py文件打包成可执行程序后, 里面的路径出现的问题
  6. Servlet超详解+流程图
  7. 数独的优化回朔算法(二)
  8. 4款FTP搜索引擎比专业
  9. tampermonkey 下载
  10. 这三种研发工程师千万不能招?
  11. vue常用之“定义全局变量constants”
  12. 词云中去重复的词_为什么要避免标题关键词重复?
  13. 秋季当养肺,水果蔬菜来帮忙
  14. SMS注册与接收短信
  15. 第十单元---前后连调
  16. VScode实现分屏显示浏览器(一边写前端代码一边可以实时查看结果)
  17. 美国标准信息交换标准码
  18. CTF中 Crypto(密码学)在线解密网站
  19. 快递查询快递api接口
  20. android源码下编译apk内无so,Android源码编译反思

热门文章

  1. Xcode8支持iOS11或者是Xcode9支持iOS11.1的设备支持文件(免费)
  2. 首次揭秘!扫福得福:支付宝春节集五福背后的技术分享
  3. idea自定义中英文翻译插件
  4. VMware创建虚拟机以及安装linux操作系统
  5. CF1528D(n² dij+增边优化建图)
  6. 餐饮汇总表mysql_基于某餐饮数据的mysql+powerBI综合案列
  7. 软考高项学习教程【第一阶段】:第1章-信息系统开发基础【考点笔记1】
  8. Python实用程序(1):发送邮件
  9. 挑选上海装修公司必备技巧。极家家居生活馆说说
  10. ssm+jsp计算机毕业设计潮流服饰网店平台f91s7(程序+LW+源码+远程部署)