js-数组排序及去重
来源:互联网 发布:海关10月进出口数据 编辑:程序博客网 时间:2024/04/30 10:43
冒泡排序:
每次从数组中拿出两位来进行排序,大的放在后边,小的放在前边。当然也可以小的在后面,大的在前面。以下以从小到大排序作为例子。
var arr=[2,6,4,5,1]function bubbleSort(arr){ for(var i = 0; i < arr.length - 1; i++){ var isSort = true;//判断是否需要进行排序 for(var j = 0; j < arr.length - 1; j++){ var a = arr[j]; var b = arr[j + 1]; if(a > b){ isSort = false; arr[j] = b; arr[j+1] = a; } } if(isSort){ return arr; } } return arr;}
快速排序
冒泡排序有个缺点就是至少比较arr.length-1次,比较繁琐。快速排序法比冒泡排序比较的次数要更少点。思路如下所示:
var arr = [5,12,2,7,6,10,11];function quickSort(arr){//如果数组已经全部分隔为1位数组,说明已经排序完成,可以返回数组 if(arr.length <= 1){ return arr; } //将中心值取出,作为分组的依据 var nub = arr.splice(Math.floor(arr.length/2),1); var left = []; var right = []; for(var i = 0; i < arr.length; i++){ if(arr[i] > nub[0]){ right.push(arr[i]); } else { left.push(arr[i]); } } //排序完成后将数组进行拼接 return quickSort(left).concat(nub,quickSort(right));}
数组去重
方法一:
var arr = [12,0,12,7,0,12,0,11,12];var arr2 = [];for(var i = 0; i < arr.length; i++){ var isHas = false;//默认新数组中没有包含 arr[i]这一位 for(var j = 0; j < arr2.length; j++){ if(arr2[j] == arr[i]){ isHas = true; } } if(!isHas){ arr2.push(arr[i]); }}
方法二(fliter方法):
var arr = [12,0,12,7,0,12,0,11,12];var arr2 = arr.filter(function(data,index){ for(var i = index ; i < arr.length; i++){ if(arr[i] == data){ return false;//去除该位 } } return true;//保留该位});
方法三:
var arr = [12,0,12,7,0,12,0,11,12];var obj = {};var arrNew=[];for(var i = 0; i < arr.length; i++){//利用对象的属性名唯一,相同的会前后覆盖 obj[arr[i]] = true;}for(var s in obj){ //将对象里的属性名提取出来,完成去重 arrNew.push(s);}console.log(arrNew);
方法四
var arr = [12,0,12,7,0,12,0,11,12];for(var i = 0; i < arr.length; i++){ if(arr.indexOf(arr[i],i+1) >= 0){ arr.splice(i,1);//将相同的数值去除 i--;//保证每次循环都是从0开始 }}console.log(arr);
阅读全文
0 0
- js-数组排序及去重
- js数组排序去重
- 数组排序及去重
- js数组的去重和排序
- js数组去重与排序
- js数组去重并排序
- JS数组扁平化、去重、排序
- JS的数组去重与排序
- IOS 数组去重及排序
- 类实现数组去重及排序
- js数组重排序与数组去重
- 数组排序去重
- JS 数组去重
- js数组去重
- js 数组去重
- js 数组去重
- js数组去重
- js 数组去重
- C语言的静态库与共享库
- Note-WebAPI
- 【JZOJ 5413】【NOIP2017提高A组集训10.22】清兰
- Hibernate_day02
- java 模拟terminal通过docker remote api连接docker容器
- js-数组排序及去重
- CORS 使用详解 + 例子
- 134. Gas Station
- java多线程系列(二)---synchronized同步代码块
- [51nod1555][CF526F]布丁怪
- WPA2密钥重装攻击原理分析
- ssm从零搭建个人博客系统(零)
- 【1701H1】【穆晨】【171024】连续第十四天总结
- angular select添加默认选项