sort() 方法在适当的位置对数组的元素进行排序,并返回数组。数组会按照字符的Unicode进行排序(把数组里面当成字符串处理)
1 按升序排列:
var a
sort() 方法在适当的位置对数组的元素进行排序,并返回数组。数组会按照字符的Unicode进行排序(把数组里面当成字符串处理)
1.按升序排列:
var arr=[1,11,2,22,5,4,0]; arr.sort( function(n1,n2){ return n1-n2; }); alert(arr);//[0,1,2,4,5,11,22]
2. 随机排序:
var arr=[1,11,2,22,5,4,0]; arr.sort( function(n1,n2){ return Math.random()-0.5; }); alert(arr);
3.按降序排列:
var arr=[1,11,2,22,5,4,0]; arr.sort( function(n1,n2){ return n2-n1; }); alert(arr);
4.根据参数属性值排序
sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同
var arr = [ {name:'zopp',age:0}, {name:'gpp',age:18}, {name:'yjj',age:8} ]; function compare(property){ return function(a,b){ var value1 = a[property]; var value2 = b[property]; return value1 - value2; } } console.log(arr.sort(compare('age')))
5. 根据参数不同,来确定是升序排列,还是降序排序
sortBy: function(attr,rev){ //第二个参数没有传递 默认升序排列 if(rev == undefined){ rev = 1; }else{ rev = (rev) ? 1 : -1; } return function(a,b){ a = a[attr]; b = b[attr]; if(a < b){ return rev * -1; } if(a > b){ return rev * 1; } return 0; } } newArray.sort(sortBy('number',false))
V8 引擎 sort 函数只给出了两种排序 InsertionSort 和 QuickSort,数量小于10的数组使用 InsertionSort,比10大的数组则使用 QuickSort。
原理:sort()方法如何实现排序
第一次1和8比较,1<8,不需要调整位置。 第二次8和3比较,8>3,需要调整位置。但是这里没有交换位置,仅仅是8覆盖了3位置。这里就可以推断出不是单纯的使用了冒泡算法。 第三是1和3比较,1<3,3替换了8的位置。什么鬼,几个意思???看到这里我也是表示不懂呀。那就继续往下看咯。 第四是8和5比较,8>5,又仅仅是覆盖,没有交换位置。还是不懂,继续往下! 第五是3和5比较,3<5,5替换了8的位置,不懂,继续往下! 第六是8和-1比较,8>-1, 还仅仅是覆盖,继续往下! 第七、八、九次,-1依次和5,3,1做了比较,并且5,3,1都移动了一次位置。
我们得出了结论:sort()方法是使用的冒泡和插入两种方式结合进行排序的。
模拟排序:
var arr=[32,12,4,20,1,54,56,6,14]; function findMinIndex(arr,start){ var iMin=arr[start]; var iMinIndex=start; for(var i=start;i<arr.length;i++){ if(iMin>arr[i]){ iMin=arr[i]; iMinIndex=i; } } return iMinIndex; } for(var i=0;i<arr.length;i++){ var n=findMinIndex(arr,i); var tem; tem=arr[n]; arr[n]=arr[i]; arr[i]=tem; } alert(arr);
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注好代码网的更多内容!