Javascript sort()発泡体の並べ替え、選択の順序、迅速な並べ替え、バケツの並べ替え

17870 ワード

sort()は、配列を正順または倒順に並べ、元の配列を変えます.
var arr=[1,4,6,2,3,8,7,6,5,3,9,10];
arr.sort();
console.log(arr);//[1,10,2,3,3,4,5,6,6,7,8,9,12]
配列を小さいものから大きいものへ、あるいは大きいものから小さいものへ順に並べたい場合は、sort()にパラメータを入力する必要があります.
var arr=[1,4,6,2,3,8,7,6,5,3,9,10];
//return a-b,        
//return b-a,        
arr.sort(function(a,b){
    return a-b;
})
//return Math.random()-0.5;       
arr.sort(function(){
	return Math.random()-0.5;
})
泡の並べ替え
  • は、後から前へ循環する
  • .
  • 内部は、外部変数
  • に前から後へ循環する.
  • は、前の値が後の値より大きいかどうかを判断し、前の値の大きさの後の値があれば、交換位置
  • を決定する.
    function sort(arr){
    	var len=arr.length;
    	while(len>0){
    	    for(var i=0;i<len;i++){
    	        if(arr[i]>arr[i+1]){
    	            var temp=arr[i];
    	            arr[i]=arr[i+1];
    	            arr[i+1]=temp;
    	        }
    	    }
    	    len--;
    	}
    }
    
    並べ替えを選択
    最初に最小または最大のインデックス値を見つけて、現在の下付き要素とこの最小の要素を交換します.
  • エルゴード配列
  • 現在のインデックス値の最小値を設定します.
  • は、現在の次の項目から配列の末尾
  • を巡回する.
  • は、全ての巡回値の中で最小のインデックス値
  • を判断する.
  • は、現在の値と最小のインデックス値の要素
  • を交換する.
    function sort(arr){
    	var minIndex;
    	for(var i=0;i<arr.length;i++){
    		//           
    	    minIndex=i;
    	    for(var j=i+1;j<arr.length;j++){
    	    	//             , minIndex  ,               minIndex
    	        minIndex=arr[minIndex]<arr[j] ? minIndex : j;
    	    }
    	    //      minIndex   
    	    var temp=arr[i];
    	    arr[i]=arr[minIndex];
    	    arr[minIndex]=temp;
    	}
    }
    
    クイックソート(早い列)
  • は、配列の中間要素を削除し、この要素を変数
  • に返します.
  • は2つの空の配列を作成します.一つはleftで、一つはrightで、この配列を巡回して、中間要素より小さいデータをleftに預け入れます.中間要素より大きいデータはright
  • に預け入れます.
  • は、left配列を中間要素とRight配列と再帰的に結合し、
  • に戻る.
  • は、関数の最上部に、必ず書き込み行列長が1以下であり、この配列
  • を返します.
    var arr = [1,4,2,2,3,10];
    function sort(arr){
    	//           1,     
        if(arr.length<=1) return arr;
        var left=[];
        var right=[];
        //            item,          ,        
        var item=arr.splice(parseInt(arr.length/2),1)[0];
        for(var i=0;i<arr.length;i++){
        	//    ,     item,   left   
            if(arr[i]<item) left.push(arr[i]);
            //     item,   right   
            else right.push(arr[i]);
        }
        arr=sort(left).concat(item,sort(right));
        return arr;
    }
    console.log(sort(arr));
    
    バケツの並べ替え
    オブジェクトのkeyが数値の場合、オブジェクトは数値順に自動的に並べられ、keyが数値と文字が交差している場合は数値を優先します.
  • は、配列中の各項目を対象としたkeyとvalueである.
  • オブジェクトの中のkeyが数値である場合、オブジェクトは数値順に自動的に並べられます.
  • は、元の配列のデータをクリアする.
  • は、オブジェクトのvalueを順番に配列に追加します.
  • let arr=[2,5,7,1,4,3,6,8,0];
    let obj={};
    arr.forEach(item=>{
    	obj[item]=item
    });
    arr.length=0;
    for(let prop in obj){
        arr.push(obj[prop]);
    }
    console.log(arr);//[0,1,2,3,4,5,6,7,8]