it-swarm.com.de

Beispiele für Algorithmen, die O (1), O (n log n) und O (log n) Komplexitäten aufweisen

Welche Algorithmen verwenden wir täglich, die O (1) -, O (n log n) - und O (log n) -Komplexitäten aufweisen?

94
Rachel

Wenn Sie Beispiele für Algorithmen/Gruppe von Anweisungen mit zeitlicher Komplexität wünschen, wie in der Frage angegeben, finden Sie hier eine kleine Liste -

O (1) Zeit 
1. Zugriff auf Array-Index (int a = ARR [5];)
2. Einfügen eines Knotens in die verknüpfte Liste
3. Drücken und Poping auf Stapel
4. Einfügen und Entfernen aus der Warteschlange
5. Herausfinden des übergeordneten oder linken/rechten untergeordneten Objekts eines Knotens in einer in Array gespeicherten Baumstruktur
6. Zum nächsten/vorherigen Element in der doppelt verknüpften Liste springen
und es gibt noch eine Million solcher Beispiele ...

Pünktlich
1. Ein Array durchlaufen
2. Durchsuchen einer verknüpften Liste
3. Lineare Suche
4. Löschen eines bestimmten Elements in einer verknüpften Liste (nicht sortiert)
5. Zwei Saiten vergleichen
6. Nach Palindrom suchen
7. Zählen/Bucket Sort
und auch hier finden Sie eine Million solcher Beispiele ....
Kurz gesagt, alle Brute-Force-Algorithmen oder Noob-Algorithmen, die eine Linearität erfordern, basieren auf der Zeitkomplexität O(n)

O (log n) Zeit
1. Binäre Suche
2. Suche nach der größten/kleinsten Zahl in einem binären Suchbaum
3. Bestimmte Divide- und Conquer-Algorithmen basierend auf linearer Funktionalität
4. Berechnung der Fibonacci-Zahlen - beste Methode
Die Grundvoraussetzung hier ist, NICHT die vollständigen Daten zu verwenden und die Problemgröße mit jeder Iteration zu reduzieren

O (nlogn) Zeit
1. Zusammenführen, sortieren
2. Heap Sort
3. Schnelle Sorte
4. Bestimmte Divide- und Conquer-Algorithmen basieren auf der Optimierung von O (n ^ 2) -Algorithmen
Der Faktor "log n" wird eingeführt, indem Divide and Conquer in Betracht gezogen wird. Einige dieser Algorithmen sind die am besten optimierten und werden häufig verwendet.

O (n ^ 2) Zeit
1. Bubble Sort
2. Sortieren durch Einfügen
3. Auswahl sortieren
4. Durchlaufen eines einfachen 2D-Arrays
Diese sollen die weniger effizienten Algorithmen sein, wenn ihre O(nlogn) - Gegenstücke vorhanden sind. Die allgemeine Anwendung kann hier Brute Force sein.

Ich hoffe, das beantwortet deine Frage gut. Wenn Benutzer weitere Beispiele hinzufügen, bin ich mehr als glücklich :)

196
Karan Bajaj

Ein einfaches Beispiel für O(1) könnte return 23; sein - unabhängig von der Eingabe wird diese in einer festen, endlichen Zeit zurückgegeben.

Ein typisches Beispiel für O(N log N) wäre das Sortieren eines Eingabearrays mit einem guten Algorithmus (z. B. Mergesort).

Ein typisches Beispiel, wenn O(log N) einen Wert in einem sortierten Eingabefeld nach der Halbierung suchen würde.

28
Alex Martelli

O(1) - most cooking procedures are O(1), that is, it takes a constant amount of time even if there are more people to cook for (to a degree, because you could run out of space in your pot/pans and need to split up the cooking)

O (logn) - etwas in Ihrem Telefonbuch finden. Denken Sie an die binäre Suche. 

O (n) - Lesen eines Buches, wobei n die Anzahl der Seiten ist. Dies ist die Mindestzeit, die ein Buch lesen muss.

O (nlogn) - Ich kann nicht sofort an etwas denken, das man jeden Tag tun könnte, was nlogn ist.

23
Chii

Ich kann Ihnen einige allgemeine Algorithmen anbieten ...

  • O(1): Accessing an element in an array (i.e. int i = a[9])
  • O(n log n): quick or mergesort (On average)
  • O (log n): Binäre Suche 

Dies wären die Antworten auf den Bauch, da dies nach einer Art von Hausaufgaben/Interviews klingt. Wenn Sie nach etwas Konkreterem suchen, ist es etwas schwieriger, da die Öffentlichkeit im Allgemeinen keine Vorstellung von der zugrunde liegenden Implementierung (natürlich mit Sparing Open Source) einer beliebten Anwendung hat.

10
Scanningcrew

O (1) - Löschen eines Elements aus einer doppelt verknüpften Liste. z.B.

typedef struct _node {
    struct _node *next;
    struct _node *prev;
    int data;
} node;


void delete(node **head, node *to_delete)
{
    .
    .
    .
}
3
sigjuice

Sie können der Liste folgende Algorithmen hinzufügen:

O(1) - Feststellen, ob eine Zahl gerade oder ungerade ist; Mit HashMap arbeiten

O(logN) - Berechnen von x ^ N, 

O(N Log N) - Am längsten wachsende Teilfolge

2
rachvela

Die Komplexität einer Softwareanwendung wird nicht gemessen und nicht in der Big-O-Notation geschrieben. Es ist nur nützlich, die Algorithmuskomplexität zu messen und Algorithmen in derselben Domäne zu vergleichen. Wenn wir O (n) sagen, meinen wir höchstwahrscheinlich "O (n) Vergleiche " oder "O (n) Arithmetikoperationen". Das bedeutet, dass Sie kein Paar von Algorithmen oder Anwendungen vergleichen können.

2
P Shved

O(1): finding the best next move in Chess (or Go for that matter). As the number of game states is finite it's only O(1) :-)

2
Carsten

O (n log n) ist bekanntlich die Obergrenze für die Schnelligkeit, mit der Sie eine beliebige Menge sortieren können (unter der Annahme, dass ein Standardmodell und kein hochparalleles Rechenmodell verwendet wird). 

1
Carsten

O (2N)  

O (2N) bezeichnet einen Algorithmus, dessen Wachstum sich mit jeder Addition zum Eingabedatensatz verdoppelt. Die Wachstumskurve eines O (2N) Funktion ist exponentiell - sie beginnt sehr flach und steigt dann meteorisch an. Ein Beispiel für ein O (2NFunktion ist die rekursive Berechnung der Fibonacci-Zahlen:

int Fibonacci (int number)
{
if (number <= 1) return number;
return Fibonacci(number - 2) + Fibonacci(number - 1);
}
0
Hefaz

0 (logn) -Binary-Suche, Peak-Element in einem Array (es kann mehr als einen Peak geben) 0 (1) -in Python Berechnet die Länge einer Liste oder eines Strings. Die Funktion len () benötigt 0(1) Zeit. Der Zugriff auf ein Element in einem Array dauert 0(1). Die Push-Operation in einem Stapel benötigt 0(1) Zeit . 0 (nlogn) -Mergesort. Das Sortieren in Python benötigt keine Zeit. Wenn Sie also listenname.sort () verwenden, dauert dies nlogn.

Hinweis-Suchen in einer Hash-Tabelle dauert wegen Kollisionen manchmal mehr als konstant.

0
Abhinav Vajpeyi