Back to Javascript Algorithms

JavaScript-Algorithmen und Datenstrukturen

README.de-DE.md

latest28.8 KB
Original Source

JavaScript-Algorithmen und Datenstrukturen

Dieses Repository enthält JavaScript Beispiele für viele gängige Algorithmen und Datenstrukturen.

Jeder Algorithmus und jede Datenstruktur hat eine eigene README mit zugehörigen Erklärungen und weiterführenden Links (einschließlich zu YouTube-Videos).

Lies dies in anderen Sprachen: English 简体中文, 繁體中文, 한국어, 日本語, Polski, Français, Español, Português, Русский, Türk, Italiana, Bahasa Indonesia, Українська, Arabic, Uzbek עברית

Datenstrukturen

Eine Datenstruktur ist eine bestimmte Art und Weise, Daten in einem Computer so zu organisieren und zu speichern, dass sie effizient erreicht und verändert werden können. Genauer gesagt, ist eine Datenstruktur eine Sammlung von Werten, den Beziehungen zwischen ihnen und den Funktionen oder Operationen, die auf die Daten angewendet werden können.

B - Anfänger:innen, A - Fortgeschrittene

Algorithmen

Ein Algorithmus ist eine eindeutige Spezifikation, wie eine Klasse von Problemen zu lösen ist. Er besteht aus einem Satz von Regeln, die eine Abfolge von Operationen genau definieren.

B - Anfänger:innen, A - Fortgeschrittene

Algorithmen nach Thema

Algorithmen nach Paradigma

Ein algorithmisches Paradigma ist eine generische Methode oder ein Ansatz, der dem Entwurf einer Klasse von Algorithmen zugrunde liegt. Es ist eine Abstraktion, die höher ist als der Begriff des Algorithmus. Genauso wie ein Algorithmus eine Abstraktion ist, die höher ist als ein Computerprogramm.

So verwendest du dieses Repository

Alle Abhängigkeiten installieren

npm install

ESLint ausführen

You may want to run it to check code quality.

npm run lint

Alle Tests ausführen

npm test

Tests nach Namen ausführen

npm test -- 'LinkedList'

Fehlerbehebung

Falls das Linting oder Testen fehlschlägt, versuche, den Ordner "node_modules" zu löschen und die npm-Pakete neu zu installieren:

rm -rf ./node_modules
npm i

Spielwiese

Du kannst mit Datenstrukturen und Algorithmen in der Datei ./src/playground/playground.js herumspielen und dir in dieser Datei Tests schreiben ./src/playground/__test__/playground.test.js.

Dann führe einfach folgenden Befehl aus, um zu testen, ob dein Spielwiesencode wie erwartet funktioniert:

npm test -- 'playground'

Nützliche Informationen

Referenzen

▶ Datenstrukturen und Algorithmen auf YouTube(Englisch)

O-Notation (Big O Notation)

Die O-Notation wird verwendet, um Algorithmen danach zu klassifizieren, wie ihre Laufzeit oder ihr Platzbedarf mit zunehmender Eingabegröße wächst. In der folgenden Tabelle finden Sie die häufigsten Wachstumsordnungen von Algorithmen, die in Big-O-Notation angegeben sind.

Quelle: Big O Cheat Sheet.

Nachfolgend finden Sie eine Liste einiger der am häufigsten verwendeten Big O-Notationen und deren Leistungsvergleiche für unterschiedliche Größen der Eingabedaten.

Big O NotationBerechnungen für 10 ElementeBerechnungen für 100 ElementeBerechnungen für 1000 Elemente
O(1)111
O(log N)369
O(N)101001000
O(N log N)306009000
O(N^2)100100001000000
O(2^N)10241.26e+291.07e+301
O(N!)36288009.3e+1574.02e+2567

Komplexität von Datenstrukturoperationen

DatenstrukturZugriff aufSucheEinfügenLöschungKommentare
Array1nnn
Stacknn11
Queuenn11
Linked Listnn1n
Hash Table-nnnIm Falle einer perfekten Hash-Funktion wären die Kosten O(1)
Binary Search TreennnnIm Falle eines ausgeglichenen Baumes wären die Kosten O(log(n))
B-Treelog(n)log(n)log(n)log(n)
Red-Black Treelog(n)log(n)log(n)log(n)
AVL Treelog(n)log(n)log(n)log(n)
Bloom Filter-11-Falschpostive sind bei der Suche möglichen

Komplexität von Array-Sortieralgorithmen

NameBesterDurchschnittSchlechtesterSpeicherStabilKommentar
Bubble sortnn<sup>2</sup>n<sup>2</sup>1JA
Insertion sortnn<sup>2</sup>n<sup>2</sup>1Ja
Selection sortn<sup>2</sup>n<sup>2</sup>n<sup>2</sup>1Nein
Heap sortn log(n)n log(n)n log(n)1Nein
Merge sortn log(n)n log(n)n log(n)nJa
Quick sortn log(n)n log(n)n<sup>2</sup>log(n)NeinQuicksort wird normalerweise in-place mit O(log(n)) Stapelplatz ausgeführt
Shell sortn log(n)abhängig von Spaltfolgen (log(n))<sup>2</sup>1Nein
Counting sortn + rn + rn + rn + rJar - größte Zahl im Array
Radix sortn * kn * kn * kn + kJak - Länge des längsten Schlüssels

Projekt-Unterstützer

Du kannst dieses Projekt unterstützen über ❤️️ GitHub or ❤️️ Patreon.

Leute, die dieses Projekt unterstützen ∑ = 0

ℹ️ A few more projects and articles about JavaScript and algorithms on trekhleb.dev