Ich wurde diese Frage im Interview vor kurzem gestellt.Sortierung Integer-Array in streng O (n) Zeit
Bei einem sortierten Integer-Array, das negative und positive Zahlen enthält, wie wird das Array basierend auf absoluten Werten der Elemente verwendet?
Dies musste streng in O (n) Zeit durchgeführt werden.
Eingangs
{-9, -7, -3,1,6,8,14}
Output
{1, -3,6, -7,8, -9,14}
Was sind die möglichen Lösungen außer O (n) Zeit?
den Punkt in der Mitte finden (wie in der Nähe Null) und verschmilzt das Array von dort sowohl in directions- diesen zwei sortierte Sub-Arrays verbinden reduziert die O gewährleistet ist (n). –
@ThomasJungblut kannst du bitte weiter erklären. –
@mmhasann Es ist einfach, nehmen Sie die Mitte des Arrays (in unserem Fall 1), die die erste Zahl im neuen Array sein muss (weil wir eine sortierte Array in der Eingabe garantiert sind). Dann verschmelzen Sie die beiden Hälften (obere und untere): Mitte = 1 -> erste der ersten Hälfte = -3 -> erste der zweiten Hälfte = 6 -> zweite der ersten Hälfte = -7 -> zweite der zweiten Hälfte = 8, ... Sie erhalten: 1, -3, 6, -7, 8, -9, 14 –