Pflegen Sie einen sortierten array in O(1)?

Wir haben ein sortiertes array, und wir möchten, erhöhen Sie den Wert von einem index von nur 1 Einheit (array[i]++), so dass das resultierende array wird noch sortiert. Ist das möglich in O(1)?
Es ist in Ordnung für beliebige Daten verwenden, die Struktur möglich in STL und C++.

In einen spezielleren Fall, wenn das array wird initialisiert, indem alle 0-Werte, und es ist immer inkrementell konstruiert, die nur durch erhöhen den Wert eines index ist, ist es eine O(1) Lösung???

  • Sicher, es kann. Ich glaube, wenn es keine wiederholten Elemente, dann würden wir nur müssen Sie eine swap-und es ist sortiert.
  • Recht. Ich erkannte, dass, sobald ich Lesen Sie den Teil, wo Sie sagte, das array wird mit 0 initialisiert ist. 🙂
  • Ist das eine Frage der Programmierung? Sieht eher aus wie eine generische algorithmen-bezogene Frage.
  • Es ist eine Programmier-Frage in dem Sinne, dass ich gerne die Lösung implementierbar in C++ zumindest 😉
  • Keine Elemente eingefügt werden, die vorhandenen Elemente geändert werden.
  • Es ist nicht O(n log n), ist dieses array bereits sortiert. Alles, was Sie tun müssen ist, tauschen Sie die Werte, bis Sie einen Wert gleich dem, den du erhöht. Schlimmste Szenario wäre O(n)
  • Farshid Hinzugefügt habe ich einige code, ich denke, mehr oder weniger deinen Anforderungen entspricht. Ich sage es im Kommentar, denn es war update zu begraben beantworten.
  • Ich habe einige code, den man sich anschauen kann.
  • Danke Jungs für so viele Antworten! Sie sind alle Super 🙂
  • [diese ignorieren. Ich dachte, Sie bedeutete für das Anhängen eines neuen Elements, nicht Schrittweite ein vorhandenes Element.

InformationsquelleAutor Farshid | 2013-11-13
Schreibe einen Kommentar