Frage

Wenn wir brauchen, um eine Funktion zu implementieren, die ein Array von ganzen Zahlen und gibt die maximale ganze Zahl in der Sammlung unter der Annahme erfolgt, dass die Länge des Arrays weniger als 1000. Würden Sie Blase verwenden sortieren oder Merge Sort und Warum?

Auch, was passiert mit der obigen Algorithmus Wahl, wenn die Array-Länge als 1000 größer ist? Ich bin ein wenig verwirrt darüber, warum ich einen bestimmten Algorithmus über einen anderen verwenden soll. Ist es nur aufgrund seiner Komplexität und Zeit oder auch anderer Faktoren daran beteiligt? Was passiert, wenn ich die obige Funktion zu testen, und das braucht viel mehr Zeit für einen einfachen Algorithmus und weniger Zeit für einen Komplex ein?

War es hilfreich?

Lösung

Ich würde nicht sortieren überhaupt. Ich habe gerade das Array durchlaufen und zu verfolgen, die größten, wie ich gehe. Dieser Vorgang dauert O (N) Zeit, während eine Sortieralgorithmen im Allgemeinen nicht besser tun als O (N * log (N)).

Andere Tipps

Nun, wenn Sie sortieren muss, dann Mergesort verwenden, weil es irgendwie viel schneller als Blase ist. Für 1000 Elemente und eine einzige Art werden Sie wahrscheinlich den Unterschied auf einem modernen Computer nicht bemerken, aber für mehr Elemente (ich denke> = 10 000) die Differenz notieceable wird.

Hier können Sie die Länge Ihres Array anrufen N.

die Array Sortierung Sortieren mit Blase dauert etwa in der Größenordnung von N * N Zeiteinheiten.

es Sortierung mit Merge nimmt Sortieren in der Reihenfolge N * log N Zeiteinheiten.

Einfach an jedem Element einer nach dem anderen suchen und zu verfolgen, von denen eine der größten ist, wird in der Größenordnung von N Einheiten der Zeit in Anspruch nehmen.

Damit die letzte Methode verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top