博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组排序
阅读量:4616 次
发布时间:2019-06-09

本文共 2538 字,大约阅读时间需要 8 分钟。

JS数组排序技巧汇总

本文实例总结了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

效果如图:

图片.png

4、希尔排序

function shellSort(nums){ //希尔排序 var gaps=[5,3,1];//定义间隔区间 for(var g=0;g
=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
'); } var nums=[6,0,2,9,3,5,8,0,5,4]; show(nums);//6 0 2 9 3 5 8 0 5 4 shellSort(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=arry function sorrt() { length = ary.length; for (var i = 0; i < length; i++) { _min = ary[i] k = i for (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

7、结合ES6中的new Set进行去重后排序:

let arr = [3,5,2,1,3,2,4];

function setSort(arr){

  let newArr = [...new Set(arr)].sort();

  console.log(newArr);

};

setSort(arr);

 

 

转载于:https://www.cnblogs.com/leftJS/p/10992726.html

你可能感兴趣的文章
从头认识Spring-2.4 基于java的标准注解装配-@Inject-限定器@Named
查看>>
sql server 实现多表连接查询
查看>>
Python标准库:内置函数getattr(object, name[, default])
查看>>
转:android 自定义RadioButton样式
查看>>
HTTP请求过程
查看>>
织梦多域名解析到同一个空间导致打开链接不一致怎么办?
查看>>
OpenCV探索之路(十五):角点检测
查看>>
Xcode10 library not found for -lstdc++ 找不到问题
查看>>
Mysql 8.0.13如何重置密码
查看>>
发布功能完成
查看>>
excel 合并单元格
查看>>
iOS设计模式简介
查看>>
c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)
查看>>
Log4net入门(ASP.NET MVC 5篇)
查看>>
C语言中的地址传递(传指针,传递给形参的指针仍然是实参指针的一份拷贝)
查看>>
redis缓存数据库及Python操作redis
查看>>
opencms忘记Admin用户登录密码解决方案
查看>>
forms组件
查看>>
C# 线程更新ui
查看>>
iOS 页面间几种传值方式(属性,代理,block,单例,通知)
查看>>