本文实例总结了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);
结果如下:
2、sort排序
var arrSimple=new Array(1,8,7,6,2,5);arrSimple.sort();// document.writeln(arrSimple.join());console.log(arrSimple.join())
效果如下:
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]));
效果如图:
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
效果如图:
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);
效果如图:
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())
效果如下:
附: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资源大放送。