Inhaltsverzeichnis
Hash-Tabellen werden normalerweise basierend auf Arrays implementiert, aber im Vergleich zu Arrays hat es viele Vorteile:
Array, aber ihre Magie liegt in einer Transformation des
großen Zahlen in Indizes innerhalb des Array-Bereichs
, Konflikt ist unvermeidlich, wir können nur
(
Qin Jius Algorithmus genannt
zu verwenden: die Länge der Hash-Tabelle; die Basis der N-ten Potenz usw.
Heim Web-Frontend js-Tutorial Detaillierte Einführung in die Implementierung von Hash-Tabellen durch JavaScript

Detaillierte Einführung in die Implementierung von Hash-Tabellen durch JavaScript

Mar 03, 2022 pm 05:21 PM
javascript

Dieser Artikel vermittelt Ihnen relevantes Wissen über Javascript. Er stellt hauptsächlich die damit verbundenen Probleme zur Implementierung von Hash-Tabellen vor. Die gesamte Struktur des Arrays, in das die endgültigen Daten eingefügt werden, und das Ergebnis ist die Hash-Tabelle. hoffe es hilft allen.

Verwandte Empfehlungen: Javascript-Lerntutorial

Hash-Tabellen werden normalerweise basierend auf Arrays implementiert, aber im Vergleich zu Arrays hat es viele Vorteile:

  1. Es kann ein sehr schnelles Einfügen ermöglichen – Lösch-Suche Operationen
  2. Egal wie viele Daten vorhanden sind, das Einfügen und Löschen erfordert nahezu konstante Zeit: das heißt O(1)-Zeitniveau. Tatsächlich sind dafür nur wenige Maschinenanweisungen erforderlich.
  3. Hash-Tabellen sind schneller als Bäume, und Sie können die gewünschten Elemente grundsätzlich sofort finden.
  4. Hash-Tabellen sind viel einfacher zu programmieren als Bäume Die Hash-Tabelle ist nicht in Ordnung, daher können die Elemente nicht auf feste Weise durchlaufen werden
Normalerweise dürfen die Schlüssel in der Hash-Tabelle nicht wiederholt werden, und dieselben Schlüssel können nicht als Schlüssel platziert werden, der zum Speichern verschiedener Elemente verwendet wird

Die Speicherplatznutzung ist nicht hoch, die unterste Ebene verwendet Arrays und einige Zellen werden nicht verwendet

  1. Was ist eine Hash-Tabelle?
  2. Hash-Tabellen sind nicht leicht zu verstehen, im Gegensatz zu Arrays, verknüpften Listen und Bäumen, die ihre Struktur und Prinzipien in Form von Grafiken ausdrücken können.
Die Struktur der Hash-Tabelle ist

Array, aber ihre Magie liegt in einer Transformation des

Indexwerts. Diese Transformation kann als
    Hash-Funktion
  • bezeichnet werden, die über die Hash-Funktion
  • HashCode
  • erhalten werden kann. Einige Konzepte von Hash-Tabellen
  • Hashifizierung:
Der Prozess der Umwandlung von

großen Zahlen in Indizes innerhalb des Array-Bereichs

wird
    Hashing
  • genannt; ha Hash-Funktion: Wir konvertieren normalerweise Wörter in große Zahlen und fügen Sie die Code-Implementierung des
  • Hashing
  • großer Zahlen in eine Funktion ein, die Hash-Funktion genannt wird; Hash-Tabelle: Kapseln Sie die gesamte Struktur in das Array in die die endgültigen Daten eingefügt werden und das Ergebnis eine Hash-Tabelle
  • ist.
  • Probleme, die noch gelöst werden müssen: Der gehashte Index ist immer noch möglich duplizieren
  • Wie kann dieses Problem gelöst werden? Diese Situation nennt man
Konflikt

, Konflikt ist unvermeidlich, wir können nur

den Konflikt lösen
    .
  • Methoden zur KonfliktlösungZwei gängige Lösungen zur Konfliktlösung:
  • Option 1:
Kettenadressenmethode

(

Zip-Methode

);

Wie in der Abbildung unten gezeigt, werden wir jede Nummer Die Restoperation wird für
    10
  • ausgeführt und der Bereich des Restes 0~9 wird als Indexwert des Arrays verwendet. Darüber hinaus speichert die Position, die jedem Indexwert im Array entspricht, nicht mehr eine Zahl, sondern ein Array oder eine
  • verknüpfte Liste
bestehend aus Zahlen mit demselben Rest nach einer Restoperation.

Zusammenfassung: Die Möglichkeit, Konflikte mit der Kettenadressmethode zu lösen, besteht darin, dass jede Array-Einheit nicht mehr

einzelne Daten

speichert, sondern eine Kette

. Die häufig verwendete Datenstruktur für diese Kette ist

Array oder verknüpfte Liste, die beiden Datenstrukturen sind bei der Suche gleichermaßen effizient (da die Kette im Allgemeinen nicht zu viele Elemente enthält). Option 2: Methode der offenen Adresse; Die Hauptarbeitsmethode der Methode der offenen Adresse besteht darin, leere Zellen zu finden

, um
    widersprüchliche
  • Datenelemente zu platzieren.

Entsprechend den verschiedenen Methoden zur Erkennung der Position leerer Zellen kann sie in drei Methoden unterteilt werden: Lineare Erkennung

Sekundäre Erkennung

  • Rehash-Methode
  • Du kannst siehe Mit zunehmendem Füllfaktor nimmt die durchschnittliche Erkennungslänge linear und sanft zu. Die Kettenadressmethode wird häufig in der Entwicklung verwendet. Beispielsweise wird die Kettenadressmethode in HashMap in Java verwendet.
  • Ausgezeichnete Hash-FunktionDer Vorteil einer Hash-Tabelle ist ihre Geschwindigkeit, sodass die Hash-Funktion keine komplexen Algorithmen verwenden kann, die viel Leistung verbrauchen. Eine Möglichkeit, die Geschwindigkeit zu verbessern, besteht darin,
  • Multiplikationen und Divisionen
in der Hash-Funktion zu minimieren.

Eine leistungsstarke Hash-Funktion sollte die folgenden zwei Vorteile haben:

  • Schnelle Berechnung;
  • Schnelle Berechnung
Horners Gesetz wird in China auch
Qin Jius Algorithmus genannt

Wann Um den Wert eines Polynoms zu ermitteln, berechnen Sie zunächst den Wert des linearen Polynoms in der innersten Klammer und berechnen Sie dann den Wert des linearen Polynoms Schicht für Schicht von innen nach außen. Dieser Algorithmus wandelt den Wert des Polynoms f(x) n-Grades in den Wert von Polynomen n-Grads um.

Vor der Transformation:

Anzahl der Multiplikationen: n (n+1)/2-mal;

Anzahl der Additionen: n-mal;

Nach der Transformation:
  • Anzahl der Multiplikationen: n-mal ;
Anzahl der Additionen: n-mal;

Wenn großes O zur Darstellung der Zeitkomplexität verwendet wird, wird es direkt von

O(N2)
    vor der Transformation auf
  • O(N)
  • reduziert.
  • Gleichmäßige Verteilung

Um sicherzustellen, dass die Daten gleichmäßig in der Hash-Tabelle verteilt sind, wenn wir Konstanten verwenden müssen, versuchen Sie,

Primzahlen
zu verwenden: die Länge der Hash-Tabelle; die Basis der N-ten Potenz usw.

HashMap in Java verwendet die Kettenadressmethode und die für das Hashing verwendete Formel lautet: index = HashCode (Schlüssel) & (Länge-1) Das heißt, die Daten werden für - und -Operationen in Binärdateien konvertiert. und es handelt sich nicht um eine Restoperation. Auf diese Weise verarbeitet der Computer direkt Binärdaten, was effizienter ist. Bei der Ausführung von

- und

-Operationen, die als Big Data bezeichnet werden, treten jedoch Probleme bei JavaScript auf, sodass die Restoperation weiterhin verwendet wird, wenn JavaScript zum Implementieren von Hashing verwendet wird.

                    function HashTable() {
                // 存放相关的元素
                this.storage = [];
                // 存了多少数据
                this.count = 0;
                // 用于标记数组中一共存放了多少个元素
                this.limit = 7;
                /*
           设计哈希函数
           ①将字符串转成比较大的数字
           ②将大的数字hashCode压缩到数组范围之内
            */
                HashTable.prototype.hashFunction = function (str, size) {
                    var hashCode = 0;
                    //秦九韶算法(霍纳算法)
                    // 哈希表的长度、N次幂的底数等尽量选取质数
                    for (var i = 0; i  this.limit * 0.75) {
                        var newLimit = this.limit * 2;
                        var prime = this.getPrime(newLimit);
                        this.resize(prime);
                    }
                };
                // 获取
                HashTable.prototype.get = function (key) {
                    var index = this.hashFunction(key, this.limit);
                    var bucket = this.storage[index];
                    if (bucket == null) return null;
                    for (var i = 0; i  7 && this.count  0 ? false : true;
                };
                // size
                HashTable.prototype.size = function () {
                    return this.count;
                };
                // toString
                HashTable.prototype.toString = function () {
                    var str = '';
                    for (var i = 0; i 
Nach dem Login kopieren

Verwandte Empfehlungen: Javascript-Lerntutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Implementierung von Hash-Tabellen durch JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

So verwenden Sie insertBefore in Javascript So verwenden Sie insertBefore in Javascript Nov 24, 2023 am 11:56 AM

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems Dec 17, 2023 am 08:41 AM

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann

See all articles