Das ist das Problem aufrechtzuerhalten i Begegnung am:C++: Was ist der schnellste Weg ist, eine geordnete Tabelle von IP-Adresse
Ein DNS-Abfrage-Ergebnisse in einer Liste der IP-Adresse in einer zufälligen Reihenfolge. Fo ex, wenn es 4 Adresse gibt, Abfrage 2 mal Ergebnisse in 4 Adresse kommt in anderer Reihenfolge.
Nun müssen Sie eine geordnete Tabelle einrichten, die auf die Adressen in O (1) zugreifen kann.
Mögliche Lösung wäre Reihenfolge der IP-Adresse jedes Mal. Wenn also beispielsweise 2, 1, 7, 4 empfangen werden, können wir sie sortieren, und das Ergebnis ist immer 1, 2, 4, 7, und indem wir die IP-Adresse in einen Vektor setzen, können wir sie mit O (1)
indizieren- Das Problem entsteht, wenn das DNS 5 Adresse ergibt, sagen wir, die neue Adresse ist 3. Jetzt wird 3 zwischen der Tabelle hinzugefügt und Bestellung ist vermasselt, da das 3. Element sollte 4. Wir müssen hinzufügen Neue Elemente am Ende der Tabelle
- Das Löschen des Elements muss ebenfalls ordnungsgemäß gehandhabt werden, da ein leerer Tabellensteckplatz das Problem verursachen kann.
Kann dies mit O (1) oder schlechteste O (lügt n)
Das Problem getan wird, ist eine Bestellung von IP jedes Mal adressiert eine geordnete Liste als Eingabe gegeben zu halten
Wie ist 'std :: set' mit Ihrem benutzerdefinierten Vergleich, ist es bestellt und hat Nachschlag Strafe von O (log n)? – Arunmu
Danke..was sollte der Vergleich sein? Ist das Element neu und nicht im Set vorhanden? – Nikhil
Die größte Anzahl an IP-Adressen in einem DNS-Paket, das ich je gesehen habe (und ich habe fünf Jahre lang DNS-Testsoftware geschrieben), ist Mitte zwanzig. In welcher extrem eingeschränkten Umgebung arbeiten Sie, wo der Unterschied von O (1) und O (n * log n) für diese wenigen Punkte überhaupt messbar ist? –