Heim > Web-Frontend > js-Tutorial > JavaScript implementiert die Einfügungsart des klassischen Sortieralgorithmus

JavaScript implementiert die Einfügungsart des klassischen Sortieralgorithmus

高洛峰
Freigeben: 2016-12-29 15:59:38
Original
1519 Leute haben es durchsucht

Obwohl die Code-Implementierung der Einfügungssortierung nicht so einfach und grob ist wie die Blasensortierung und Auswahlsortierung, sollte ihr Prinzip am einfachsten zu verstehen sein, da jeder, der Poker gespielt hat, es in Sekundenschnelle verstehen kann. Wie beim Sortieren einer Pokerhand beginnen wir mit einer leeren linken Hand und den Karten auf dem Tisch mit der Vorderseite nach unten. Anschließend nehmen wir jeweils eine Karte vom Tisch und stecken diese an der richtigen Stelle in die linke Hand. Um die richtige Position einer Karte zu finden, vergleichen wir sie mit jeder Karte, die sich bereits in der Hand befindet, von rechts nach links. Die Karten in der linken Hand sind immer sortiert und waren ursprünglich die obersten Karten im Stapel auf dem Tisch.

1) Algorithmusprinzip

Die Algorithmusbeschreibung der Einfügungssortierung (Insertion-Sort) ist ein einfacher und intuitiver Sortieralgorithmus. Es funktioniert, indem es eine geordnete Sequenz erstellt. Bei unsortierten Daten scannt es die sortierte Sequenz von hinten nach vorne, findet die entsprechende Position und fügt sie ein. Bei der Implementierung der Einfügungssortierung wird normalerweise die In-Place-Sortierung verwendet (d. h. eine Sortierung, die nur O(1) zusätzlichen Platz beansprucht). Daher müssen die sortierten Elemente während des Scanvorgangs von hinten nach vorne wiederholt und schrittweise sortiert werden nach hinten verschoben und bietet so Platz zum Einfügen des neuesten Elements.

2) Beschreibung und Implementierung des Algorithmus

Im Allgemeinen wird die Einfügungssortierung auf Arrays mithilfe von In-Place implementiert. Der spezifische Algorithmus wird wie folgt beschrieben:

<1> Das Element kann als sortiert betrachtet werden.

<2> nach dem sortierten Element Von hinten nach vorne in der Reihenfolge scannen

<3> Wenn das Element (sortiert) größer als das neue Element ist, verschieben Sie das Element an die nächste Position; <4> Wiederholen Sie die Schritte 3. Bis Sie eine Position finden, an der das sortierte Element kleiner oder gleich dem neuen Element ist

<5>

<6> Wiederholen Sie die Schritte 2–5.

3) JavaScript-Code-Implementierung

Verbesserte Einfügesortierung: Verwenden Sie die binäre Suche, wenn Sie die Einfügeposition finden.

function insertSort(arr) { 
    for (var i = 1; i < arr.length; i++) { 
      var temp = arr[i]; 
      var j = i - 1; 
      while (j >= 0 && arr[j] > temp) { 
        arr[j + 1] = arr[j]; 
         j--; 
      } 
      arr[j + 1] = temp; 
    } 
    return arr; 
 } 
var arr = [1, 45, 37, 5, 48, 15, 37, 26, 29, 2, 46, 4, 17, 50, 52]; 
console.log(insertSort(arr));
Nach dem Login kopieren

Schritte:
                                                                Die binäre Suche findet die Position der ersten Zahl in der Folge, die größer ist                                    mit dem neuen Element, das an dieser Position eingefügt wird;                              >

Am besten Fall: Das Eingabearray wird in aufsteigender Reihenfolge sortiert. T(n) = O(n)

Schlimmster Fall: Das Eingabearray wird in absteigender Reihenfolge sortiert. T(n) = O(n2)
Durchschnittliche Situation: T(n) = O(n2)

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird. Ich hoffe auch, dass jeder mehr über die chinesische PHP-Website erfahren wird.

function binaryInsertionSort(arr) { 
   for (var i = 1; i < arr.length; i++) { 
     var key = arr[i],left = 0,right = i - 1; 
     while (left <= right) { 
        var middle = parseInt((left + right) / 2); 
        if (key < arr[middle]) { 
          right = middle - 1; 
        } else { 
          left = middle + 1; 
        } 
     } 
     for (var j = i - 1; j >= left; j--) { 
        arr[j + 1] = arr[j]; 
     } 
     arr[left] = key; 
    } 
    return arr; 
} 
var arr = [1, 45, 37, 5, 48, 15, 37, 26, 29, 2, 46, 4, 17, 50, 52]; 
console.log(binaryInsertionSort(arr));
Nach dem Login kopieren
Weitere Artikel zum Thema Einfügungssortierung mit JavaScript zur Implementierung des klassischen Sortieralgorithmus finden Sie auf der chinesischen PHP-Website!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage