Heim  >  Artikel  >  Backend-Entwicklung  >  Einige häufig verwendete Sortiermethoden für JS-Arrays

Einige häufig verwendete Sortiermethoden für JS-Arrays

小云云
小云云Original
2018-03-15 15:41:021704Durchsuche

In diesem Artikel werden hauptsächlich einige häufig verwendete Sortiermethoden für JS-Arrays vorgestellt, darunter Blasensortierung, Schnellsortierung, Einfügungssortierung usw. Ich hoffe, er kann Ihnen helfen.

1. Blasensortierung (von hinten nach vorne)

var array = [1,4,-8,-3,6,12,9,8];function sort(arr){    for(var j=0;j<arr.length-1;j++){    //两两比较,如果前一个比后一个大,则交换位置。
       for(var i=0;i<arr.length-1-j;i++){            if(arr[i]>arr[i+1]){                var temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        } 
    }
}
sort(array);
document.write(array);

(1) Vergleichen Sie benachbarte Elemente. Wenn das erste größer als das zweite ist, tauschen Sie ihre Positionen.

(2) Machen Sie die gleiche Arbeit für jedes Paar benachbarter Elemente, vom ersten Paar am Anfang bis zum letzten Paar am Ende. Zu diesem Zeitpunkt sollte das letzte Element die größte Zahl sein.

(3) Wiederholen Sie die obigen Schritte für alle Elemente außer dem letzten.

(4) Wiederholen Sie die obigen Schritte jedes Mal für immer weniger Elemente, bis kein Zahlenpaar zum Vergleichen mehr vorhanden ist.

2. Schnelle Sortierung: rekursives Denken, schnelle Sortierung auf beiden Seiten, Verbesserung der Blasensortierung

var array = [1,4,-8,-3,6,12,9,8];
function quickSort(arr){//如果数组长度小于等于1,则返回数组本身
   if(arr.length<=1){        return arr;
   }    //定义中间值的索引
   var index = Math.floor(arr.length/2);    //取到中间值
   var temp = arr.splice(index,1);    //定义左右部分数组
   var left = [];    var right = [];    for(var i=0;i<arr.length;i++){    //如果元素比中间值小,那么放在左边,否则放右边
       if(arr[i]<temp){            left.push(arr[i]);
       }else{            right.push(arr[i]);
       }
   }    return quickSort(left).concat(temp,quickSort(right));
}
document.write(quickSort(array));

Math.floor(x )-Methode rundet ab und gibt die nächste ganze Zahl zurück, die kleiner oder gleich x ist.

Die Methode splice(index,num,item) fügt Elemente zum Array hinzu oder entfernt Elemente aus dem Array und gibt das gelöschte Element zurück.

index ist eine Ganzzahl, der Speicherort des bearbeiteten Elements (erforderlich)

num ist eine Ganzzahl, die Anzahl der zu löschenden Elemente , wenn 0, bedeutet, dass nicht gelöscht wird (erforderlich)

Element ist ein neues Element, das dem Array hinzugefügt wird, das mehrere sein kann (optional)

Die push()-Methode fügt ein oder mehrere neue Elemente am Ende des Arrays hinzu und gibt die Länge des neuen Arrays zurück

Die concat()-Methode verbindet zwei oder mehr Arrays ohne Ändern des ursprünglichen Arrays, Zurückgeben eines neuen Arrays

3. Einfügungssortierung

var array = [1,4,-8,-3,6,12,9,8];function insertSort(arr){
//假设第0元素是有序序列,第1元素之后是无序的序列。从第1元素开始依次将无序序列的元素插入到有序序列中
   for(var i=1; i<arr.length;i++){        if(arr[i]<arr[i-1]){            //取出无序序列中需要插入的第i个元素
           var temp = arr[i];            //定义有序中的最后一个位置
           var j = i-1;
           arr[i] = arr[j];            //比较大小,找到插入的位置
           while(j>=0&&temp<arr[j]){
               arr[j+1] = arr[j];
               j--;
           };            //插入
           arr[j+1] = temp;
       }
   }
 }
insertSort(array)
document.write(array);

(1) Beginnend mit dem ersten Element Element kann als sortiert betrachtet werden

(2) Nehmen Sie das nächste Element heraus und scannen Sie

(3) Wenn das Element (sortiert) größer als das neue Element ist, verschieben Sie das Element an die nächste Position

(4) Wiederholen Sie Schritt 3, bis Sie die Position gefunden haben, an der das sortierte Element kleiner oder gleich dem neuen Element ist

(5) Fügen Sie das neue Element an der nächsten Position ein

(6) Wiederholen Sie Schritt 2

4. Auswahlsortierung

var array = [1,4,-8,-3,6,12,9,8];function selectSort(arr){    for(var i=0;i<arr.length;i++){        //设置当前范围最小值和索引
       var min = arr[i];        var minIndex = i;        //在该范围选出最小值
       for(var j=i+1;j<arr.length;j++){            if(min>arr[j]){
               min = arr[j];
               minIndex = j;
           }
       }        //将最小值插入,并将原来位置的最小值删除
       arr.splice(i,0,min);
       arr.splice(minIndex+1,1);
   }
}
selectSort(array);
document.write(array);

(1) Finden Sie das kleinste (große) Element in der unsortierten Reihenfolge

(2 ) Und speichern Sie es an der Startposition der sortierten Sequenz

(3) Suchen Sie dann weiterhin das kleinste (große) Element aus den verbleibenden unsortierten Elementen

(4) und fügen Sie es dann am Ende der sortierten Sequenz ein.

(5) und so weiter

Das obige ist der detaillierte Inhalt vonEinige häufig verwendete Sortiermethoden für JS-Arrays. 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