Cosa significa eseguire un'operazione "In Place" per le lingue interpretate?

2

Domanda di programmazione:

Reverse words in a string (words are separated by one or more spaces). Now do it in-place.

Che cosa significa "in-place" nel contesto precedente per un linguaggio interpretato come PHP o JavaScript?

    
posta Levi Hackwith 17.04.2013 - 04:29
fonte

4 risposte

6

Dipende da quanto è bassa la lingua con cui stai lavorando, ma assumendo qualcosa come C significa "non togliere la stringa e rimetterla insieme in una diversa parte della memoria, modificare la parte della memoria la stringa è già in ".

vale a dire. Non:

1. foo bar baz
2. foo bar baz -> baz
3. foo bar baz -> baz bar
4. foo bar baz -> baz bar foo

ma

1. foo bar baz
2. baz foo bar
3. baz bar foo

(O comunque esattamente il tuo algoritmo funzionerà.)

    
risposta data 17.04.2013 - 04:41
fonte
5

Normalmente significa eseguire l'operazione senza utilizzare alcuna memoria aggiuntiva. In termini di complessità spaziale, la complessità dello spazio ausiliario sarebbe O (1).

In pratica, a seconda dell'implementazione, possono essere consentite variabili temporanee. In questo caso l'output dovrebbe utilizzare la stessa posizione in memoria come input.

    
risposta data 17.04.2013 - 05:15
fonte
3

In questo contesto, si riferisce alla modifica della variabile originale, anziché utilizzare ulteriore memoria. Ciò significa che, anziché eseguire la stringa originale e copiare ciascun carattere in una nuova variabile stringa, è necessario scambiare i pezzi dell'originale mentre lo si sta visualizzando.

Wikipedia in realtà ha un intero articolo sull'argomento, citando la pertinenza e l'utilità dell'argomento relativo alla riduzione al minimo dell'uso della memoria .

    
risposta data 17.04.2013 - 05:15
fonte
0

Al posto sarà qualcosa di simile:

void reverse(char *str)
{
   if(!str)return;
   reverse(strtok(NULL," "));
   printf("%s ",revStr);
}

"Un algoritmo sul posto (o in latino in situ) è un algoritmo che trasforma l'input utilizzando una struttura di dati con una piccola quantità costante di spazio di archiviazione aggiuntivo, in genere l'input viene sovrascritto dall'output durante l'esecuzione dell'algoritmo. "
Fonte: Algoritmo sul posto

    
risposta data 17.04.2013 - 10:53
fonte

Leggi altre domande sui tag