Alle Algorithmen in Javascript
Tiefensuche in Javascript
Gepostet: , Zuletzt aktualisiert:
Der Tiefensuche-Algorithmus (Depth-First Search, DFS) ist ein Algorithmus, mit dem ein Knoten in einem Baum gefunden wird. Dies bedeutet, dass der Algorithmus bei einer gegebenen Baumdatenstruktur den ersten Knoten in diesem Baum zurückgibt, der der angegebenen Bedingung entspricht (d. H. Gleich einem Wert ist). Die Kanten müssen ungewichtet sein. Dieser Algorithmus kann auch mit ungewichteten Diagrammen arbeiten, wenn ein Mechanismus zum Verfolgen bereits besuchter Knoten hinzugefügt wird.
Zur ImplementierungGrößter gemeinsamer Teiler in Javascript
Gepostet: , Zuletzt aktualisiert:
Der größte gemeinsame Teiler zweier Zahlen (in diesem Fall a und b) ist die größte Zahl, durch die beide Zahlen ohne Rest geteilt werden können. Dieser größte gemeinsame Divisor (Teiler)-Algorithmus, der als euklidischer Algorithmus bezeichnet wird, bestimmt diese Zahl. Der größte gemeinsame Teiler wird auch oft als gcd abgekürzt.
Zur ImplementierungIterative Deepening A Star in Javascript
Gepostet: , Zuletzt aktualisiert:
Der A-Star Algorithmus mit iterativer Vertiefung (IDA & ast;) ist ein Algorithmus, der verwendet wird, um das Problem des kürzesten Pfades in einem Baum zu lösen, kann jedoch modifiziert werden, um Graphen (d. H. Zyklen) zu handhaben. Es baut auf der ID-DFS (Iterative Deepening Depth-First Search) auf, indem eine Heuristik hinzugefügt wird, um nur relevante Knoten zu untersuchen.
Zur ImplementierungDijkstra in Javascript
Gepostet: , Zuletzt aktualisiert:
Der Dijkstra-Algorithmus ist ein Algorithmus, der verwendet wird, um das Problem des kürzesten Pfades in einem Diagramm zu lösen. Dies bedeutet, dass der Dijkstra-Algorithmus bei einer Anzahl von Knoten und den Kanten zwischen ihnen sowie der “Länge” der Kanten (als “Gewicht” bezeichnet) den kürzesten Weg vom angegebenen Startknoten zu allen anderen Knoten findet.
Zur ImplementierungIterative Tiefensuche in Javascript
Gepostet: , Zuletzt aktualisiert:
Der Iterative Tiefensuche-Algorithmus (Iterative Deepening Depth-First Search, ID-DFS) ist ein Algorithmus, mit dem ein Knoten in einem Baum gefunden wird. Dies bedeutet, dass der Algorithmus bei einer Baumdatenstruktur den ersten Knoten in diesem Baum zurückgibt, der der angegebenen Bedingung entspricht. Die Kanten müssen ungewichtet sein. Dieser Algorithmus kann auch mit ungewichteten Diagrammen arbeiten, wenn ein Mechanismus zum Verfolgen bereits besuchter Knoten hinzugefügt wurde.
Zur ImplementierungPunkt-in-Polygon in Javascript
Gepostet: , Zuletzt aktualisiert:
Das PIP-Problem (Punkt-in-Polygon) ist das Problem, zu bestimmen, ob ein Punkt ein beliebiges Polygon ist. Dies mag für ein einfaches Polygon wie ein Quadrat oder ein Dreieck trivial klingen, wird jedoch mit komplexeren Polygonen wie dem im folgenden Beispiel komplexer. In diesem Beitrag wird der gerade-ungerade Algorithmus, auch Kreuzungsnummernalgorithmus oder Jordan-Algorithmus genannt (da er mit dem Jordan-Kurvensatz bewiesen werden kann) eingeführt.
Zur ImplementierungA Star in Javascript
Gepostet: , Zuletzt aktualisiert:
Der A-Stern-Algorithmus (A & ast;) ist ein Algorithmus, der verwendet wird, um das Problem des kürzesten Pfades in einem Graphen zu lösen. Dies bedeutet, dass bei einer Anzahl von Knoten und den Kanten zwischen ihnen sowie der “Länge” der Kanten (als “Gewicht” bezeichnet) und einer Heuristik (dazu später mehr) die A & ast; Der Algorithmus findet den kürzesten Weg vom angegebenen Startknoten zu allen anderen Knoten.
Zur ImplementierungBreitensuche in Javascript
Gepostet: , Zuletzt aktualisiert:
Der Breitensuchalgorithmus (Breadth-first-search, BFS) ist ein Algorithmus, der verwendet wird, um das Problem des kürzesten Pfades in einem Graphen ohne Kantengewichte zu lösen (d.h. ein Diagramm, in dem alle Knoten den gleichen “Abstand” voneinander haben und entweder verbunden sind oder nicht). Dies bedeutet, dass bei einer Anzahl von Knoten und den Kanten zwischen ihnen der Breitensuchalgorithmus den kürzesten Weg vom angegebenen Startknoten zu allen anderen Knoten findet.
Zur ImplementierungÜber die Programmiersprache:
JavaScript
JavaScript ist eine interpretierte Skriptsprache, die zuvor hauptsächlich in Webseiten verwendet wurde (die in Browsern ausgeführt werden) und seitdem über node.js auch für Back-End- und andere Aufgaben beliebt ist
Während es einen Großteil seiner Syntax von Java entlehnt, ist es eine ganz andere Sprache und sollte nicht verwechselt werden.
Getting to “Hello World” in JavaScript
Das Wichtigste zuerst - hier erfahren Sie, wie Sie Ihre erste Codezeile in JavaScript ausführen können. Wenn Sie JavaScript für das Backend verwenden möchten, lesen Sie das Kapitel zum Drucken von Hello World mit Node.js. Wenn Sie JavaScript im Frontend (d. H. Auf Webseiten) verwenden möchten, lesen Sie das Kapitel zum Drucken von Hello World im Browser.
Getting to “Hello World” in JavaScript using the browser
- Erstellen Sie eine Datei mit dem Namen hello_world.html
- Öffnen Sie es mit einem Texteditor (z. B. Sublime Text oder nur mit dem Standard-Windows-Editor).
- Fügen Sie den folgenden Codeausschnitt ein:
<html>
<head>
<script type="application/javascript">
// This prints to the browsers console
console.log("Hello World")
// This opens a popup
alert("Hello world")
</script>
</head>
<body>
(Website content)
</body>
</html>
- Öffnen Sie diese Datei mit Ihrem Browser (indem Sie den Speicherort in die Adressleiste eingeben).
- Sie sollten ein Popup mit der Aufschrift “Hallo Welt” sehen.
- Wenn Sie die Browserkonsole verwenden (z. B. in Chrome: Rechtsklick -> Überprüfen), wird diese auch dort gedruckt.
Der Grund, warum wir das Skript in HTML verpacken, ist, dass der Browser das JavaScript ansonsten nicht ausführt, sondern nur dessen Inhalt anzeigt.
Getting to “Hello World” in JavaScript using Node.js
- Laden Sie die neueste Version von Node.js von nodejs.org herunter und installieren Sie sie. Sie können auch eine frühere Version herunterladen, wenn Ihr Anwendungsfall dies erfordert.
-
Öffnen Sie ein Terminal und stellen Sie sicher, dass der Befehl
node
funktioniert. Wenn der Fehler “Befehl nicht gefunden” (oder ähnlich) angezeigt wird, starten Sie die Befehlszeile und, falls dies nicht hilft, Ihren Computer neu. Wenn das Problem weiterhin besteht, finden Sie hier einige hilfreiche Fragen zu StackOverflow für jede Plattform: -
Sobald dies funktioniert, kopieren Sie das folgende Snippet in eine Datei mit dem Namen hello_world.js:
console.log("Hello World");
- Wechseln Sie das Verzeichnis, indem Sie “cd path / to / helloworld” eingeben und dann “node helloworld.js” ausführen. Dies sollte “Hello World” auf Ihrem Terminal drucken.
Das ist es! Beachten Sie, dass die Eintrittsbarriere ähnlich niedrig ist wie bei Python und vielen anderen Skriptsprachen.
Fundamentals in JavaScript
Um in JavaScript implementierte Algorithmen und Technologien zu verstehen, muss man zunächst verstehen, wie grundlegende Programmierkonzepte in dieser bestimmten Sprache aussehen. Jedes der folgenden Snippets kann mit Node.js einzeln ausgeführt werden, da kein Boilerplate erforderlich ist. Im Browser muss der Code wie im Hello World-Beispiel für den oben gezeigten Browser von HTML umgeben sein.
Variables and Arithmetic
Variablen in JavaScript werden dynamisch typisiert, dh der Inhalt einer Variablen wird zur Laufzeit festgelegt und muss beim Schreiben des Codes nicht angegeben werden.
var number = 5;
var decimalNumber = 3.25;
var result = number * decimalNumber;
var callout = "The number is ";
// In this instance, the values are concatenated rather than added because one of them is a String.
console.log(callout + result);
Dies wird “The number is 16.25” drucken.
Arrays
Arrays in JavaScript werden als Objekte implementiert, wobei der Index nur der Name der Eigenschaft ist. Dies macht sie dynamisch dimensioniert. Die gesamten Konzepte von Objekten und Arrays werden in JavaScript zusammengeführt, wie das folgende Snippet zeigt.
var integers = {}; // initialized as object
integers[3] = 42; // assigned using array index
console.log(integers["3"]); // Accessed using property name, prints "42"
var strings = ["Hello"]; // strings[0] is now Hi
strings[2] = "World"; // index 1 skipped
strings.beautiful = "Beautiful" // Assigned using property name
console.log(strings[0] + " " + strings["beautiful"] + " " + strings[2]); // Prints "Hello World"
Conditions
Wie die meisten Programmiersprachen kann JavaScript “if-else” -Anweisungen ausführen. Darüber hinaus kann JavaScript auch “switch-case” -Anweisungen ausführen.
var value = 5;
if(value === 5){
console.log("Value is 5");
} else if(value < 5){
console.log("Value is less than 5");
} else {
console.log("Value is something else");
}
switch (value){
case 1:
console.log("Value is 1");
break; // Don't go further down the cases
case 2:
console.log("Value is 2");
break; // Don't go further down the cases
case 3:
console.log("Value is 3");
break; // Don't go further down the cases
case 4:
console.log("Value is 4");
break; // Don't go further down the cases
case 5:
console.log("Value is 5");
break; // Don't go further down the cases
default:
console.log("Value is something else");
}
Der obige JavaScript-Code gibt zweimal “Wert ist 5” aus.
Schleifen
JavaScript unterstützt sowohl for-, while- als auch do while-Schleifen. Die Anweisungen break
undcontinue
werden ebenfalls unterstützt.
Das folgende Beispiel zeigt die Unterschiede:
var value = 2;
for (var i = 0; i < value; i++) {
console.log(i);
}
while (value > 0) {
console.log(value);
value--;
}
do {
console.log(value);
value--;
} while (value > 0);
Dadurch wird Folgendes auf das Terminal gedruckt:
0
1
2
1
0
Beachten Sie die letzte “0”: Sie wird gedruckt, weil in der “do-while” -Schleife im Vergleich zur “while” -Schleife. Der Codeblock wird mindestens einmal ausgeführt, bevor die Bedingung überprüft wird.
Funktionen
Funktionen in JavaScript können mit vielen verschiedenen Syntaxen deklariert werden, z. B. als Objekteigenschaften, als Variablen oder in neueren JavaScript-Versionen als Teil einer Klasse.
Hier ist ein Beispiel für eine JavaScript-Funktion als Variable:
var my_function = function(){
console.log("Hello World")
}
my_function()
Hier ist ein Beispiel für eine JavaScript-Funktion als Objekteigenschaft:
var function_object = {}
function_object.my_function = function(){
console.log("Hello World")
}
function_object.my_function()
Und hier ist ein Beispiel für den Aufruf einer Funktion eines Objekts einer Klasse:
class FunctionClass {
my_function(){
console.log("Hello World")
}
}
new FunctionClass().my_function();
(Alle diese Beispiele drucken “Hello World”.)
Syntax
Wie bereits erwähnt, teilt JavaScript einen Großteil seiner Syntax mit Java.
JavaScript erfordert die Verwendung von geschweiften Klammern ({}
), um Codeblöcke in Bedingungen, Schleifen, Funktionen usw.;
Es sind nicht immer Semikolons am Ende von Anweisungen erforderlich, aber ihre Verwendung wird empfohlen, da ihre Verwendung bedeutet, dass die Verwendung von Leerzeichen für die bevorzugte Formatierung (z. B. Einrücken von Codeteilen) den Code nicht beeinflusst.
Fortgeschrittenes Wissen in JavaScript
JavaScript wurde erstmals 1993 veröffentlicht und ist ein Multi-Paradigma.
Es ist in erster Linie ereignisgesteuert und funktional, folgt aber auch objektorientierten und imperativen Paradigmen. Es ist dynamisch typisiert, bietet jedoch in neueren Versionen und Dialekten wie TypeScript eine gewisse statische Typisierung. Für weitere Informationen hat JavaScript einen großartigen Artikel Wikipedia.