排序

时光怂恿深爱的人放手 提交于 2019-12-04 04:37:28

1、冒泡

function bubb(arr,isDesc){
    var len = arr.length;
    for(var i=0;i<len;i++){
        for(var j=i+1;j<len;j++){
            if(arr[i] > arr[j]){
                var temp =  arr[i];
                arr[i] =  arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

2、插入排序(当数据有序层度越高时,效率越高)数据量不宜太大

// 插入排序分为  已排序区,和为排序区
function insert(arr){

    var len = arr.length;
    if(len == 1){
        return arr;
    }else{
        for(var i=1;i<len;i++){
            var temp = arr[i];
            for(var j=i-1;j>=0;j--){
                if( temp < arr[j]){
                    arr[j + 1] = arr[j];
                }else{
                    break;
                }
            }
            arr[j + 1] = temp;//最后插入时,临界位置
        }
    }
}

3、希尔排序

// 希尔排序  ,在插入排序上将大数据进行分组,对每个分组进行插入排序;

function shell(arr){
    var len = arr.length,
        gap = len;// 增量 通过增量在逻辑上吧原数组分组,将每个分组进行插入排序,并且减小增量大小,,直到为1  

    while(gap > 1){
        gap = Math.floor(gap / 2);
      
        for(var x=0;x<gap;x++){//分组个数

            for(var i=x+gap;i<len;i = i+gap){ 
                var temp = arr[i];
                for(var j=i-gap;j>=0;j = j-gap){
                  
                    if( temp < arr[j]){
                        arr[j + gap] = arr[j];
                    }else{
                        break;
                    }
                }
                arr[j + gap] = temp;//最后插入时,临界位置
            }
        }
    }

}

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!