javascript中排序的方法

来源:互联网 发布:java list排序函数 编辑:程序博客网 时间:2024/06/08 12:34

插入排序

原理:把元数组中的第一项拿出来放在新数组中,在对原数组进行循环和新数组中的每一项对比,如果原数组中的这一项比新数组中的每一项都小,则放到新数组中的第一项,相反这放在新数组最后。

var ary=[5,9,7,3,4,8,2];    function paixu(ary){        var newary=[];        newary.push(ary[0]);        console.log(newary);        for(var i=1;i<ary.length;i++){            for(var j=newary.length-1;j>=0;){                if(ary[i]<newary[j]){                    j--;                    if(j===-1){                        newary.unshift(ary[i]);                    }                }else{                    newary.splice(j+1,0,ary[i]);                    j=-1                }            }        }        return newary;    }    paixu(ary);    console.log(paixu(ary));

快速排序

原理:把原数组的长度去中间值,之后把中间的那个值记录下来cur,之后把原数组中剩下的值循环和cur比较,如果大于cur就放在右边,小于就放在左边,之后再对左右两边的值进行快速排序,之后cur的两边的值是一个为止,结束排序。

<script>    var ary=[19,14,11,18,16,15,17];    function quicksort(ary){        if(ary.length<=1){            return ary;        }        var index= Math.floor(ary.length/2);        var cur=ary.splice(index,1)[0];                var left=[];        var right=[];        for(var i=0;i<ary.length;i++){            ary[i]>cur?right.push(ary[i]):left.push(ary[i]);        };        return quicksort(left).concat([cur],quicksort(right));    };    console.log(quicksort(ary))</script>

sort排序:只可以排数字

<script>    var ary=[4,3,5,2,6,1];    ary.sort(function(a,b){return a-b;});    console.log(ary)</script>

冒泡排序

原理:原数组中的第一个小于第二个,不做操作,如果第一个大于第二个,那么交换二者的位置

<script>    var ary=[4,5,3,6,2,1,8];    function sort(ary) {        var flag=false;        for(var i=0;i<ary.length-1;i++){            for(var j=0;j<ary.length-i-1;j++){                if(ary[j]>ary[j+1]){                    ary[j]=ary[j]+ary[j+1];                    ary[j+1]=ary[j]-ary[j+1];                    ary[j]=ary[j]-ary[j+1];                    flag=true;//只要本轮有交换的就让flag=true                }            }            if(flag){//flag==true上一轮有交换的,继续执行下一轮 让flag从新的赋值false                flag=false;            }else{//上一轮没有交换,已经排好了,直接结束循环即可                break;            }        }        return ary;    }    console.log(sort(ary))</script>