Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung von Sortiermethoden in JavaScript-Algorithmen

Detaillierte Erläuterung der Verwendung von Sortiermethoden in JavaScript-Algorithmen

伊谢尔伦
伊谢尔伦Original
2017-07-22 14:43:171165Durchsuche

Tatsächlich ist es relativ einfach, die Array-Sortierung in js mithilfe der Sortiermethode im Array zu implementieren:

Sortierung

Einfache Implementierung der Array-Sortierung

var arr = [];  
for(var i=0;i<20;i++){  
    arr.push(Math.floor(Math.random()*100))  
}  
arr.sort(function(a,b){  
    return a>b?1:-1;  
})  
alert(arr)

kann nicht einfach die Sortiermethode verwenden. Standardmäßig sortiert die Sortiermethode nach alphabetischer ASCII-Reihenfolge und nicht nach numerischer Größe, wie wir denken,

sort(). Die Methode kann eine Methode als Parameter akzeptieren, und diese Methode verfügt über zwei Parameter. Stellt die beiden Array-Elemente für jeden Sortiervergleich dar. Wenn sort() sortiert, wird dieser Parameter jedes Mal ausgeführt, wenn zwei Array-Elemente verglichen werden, und die beiden verglichenen Array-

-Elemente werden als Parameter an diese Funktion übergeben. Wenn die Funktion den Wert 1 zurückgibt, wird die Reihenfolge der beiden Array-Elemente vertauscht, andernfalls wird sie nicht vertauscht.

Array-Sortierung des Algorithmus

var arr = [];  
for(var i=0;i<20;i++){  
    arr.push(Math.floor(Math.random()*100))  
}  
//生成一个无序的arr数组  
function sort(arr,start,end){  
    //数组长度为1  
    if(start == end ){  
        return [arr[start]]  
    }else if(start == end-1){  
        //数组长度为2,根据数值大小 来排序  
        if(arr[start]>arr[end]){  
            return [arr[end],arr[start]]  
        }else{  
            return [arr[start],arr[end]]  
        }  
    }  
    // 数组长度一半  
    var l = Math.floor((start+end)/2);  
    //左边数组  
    var arrLeft = sort(arr, start,l);  
    //右边数组  
    var arrRight = sort(arr,l+1,end);  
    //返回结果  
    var result = [];  
    //分割成两部分 左右两个数组 只比对数组中的第一个数,那个数值小就把谁放到结果里面,并把小的数值删除掉,固采用数组中的shift方法。一旦出现左边数组或右边数组,没有数据的时候  
    //result数组就与还有数据的数组合并 采用 concat,并返回结果  
    while(arrLeft.length>0 || arrRight.length>0){  
        if(arrLeft.length==0){  
            result = result.concat(arrRight);  
            break;  
        }else if(arrRight.length==0){  
            result = result.concat(arrLeft);  
            break;  
        }  
        if(arrLeft[0]<arrRight[0]){  
            result.push(arrLeft.shift())  
        }else{  
            result.push(arrRight.shift());  
        }  
    }  
    return result;  
}  
var arrSort = sort(arr,0,arr.length-1);//参数 数组,开始位置,结束位置  
document.write(arr+&#39;<br/>&#39;+arrSort);

Erläuterung: Bei der Array-Sortierung wird hauptsächlich ein Array in zwei Teile geteilt, bis es nicht mehr möglich ist. Am Ende kann es nur noch in zwei Teile geteilt werden. Oder zwei, da die Länge des Arrays in ungerade und gerade Zahlen unterteilt wird. Nach der Aufteilung beginnt die Sortierung, bis nur noch eine oder zwei im endgültigen Array vorhanden sind, und diese Ergebnisse werden einzeln verglichen und zusammengeführt . Sie denken vielleicht, warum diese Methode nicht immer so kompliziert ist. Tatsächlich können Sie das natürlich tun, aber es gibt immer noch das Wort Leistung, wenn die Daten Zehner, Hunderter, jedermanns sind Berechnete Ergebnisse: Die Zeit spielt keine Rolle, wenn die Datenmenge riesig ist, Hunderte von Millionen oder Milliarden, haben wir dann immer noch das Vertrauen, die erste Methode zu verwenden? Tatsächlich ist der Algorithmus von js „Teilen und Herrschen“ und teilt viele Probleme in kleine auf lösen.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Sortiermethoden in JavaScript-Algorithmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn