Se due parole o frasi sono anagrammi , condividono la stessa serie di lettere in un ordine diverso . Ad esempio , "ascoltare" e "silenzioso" sono anagrammi . È possibile creare un algoritmo di ordine n log ( n) efficienza che consente di verificare se un elenco di date parole sono anagrammi . Ordinare poi con un ( n log ( n) ) un ordine O e utilizzare una tabella hash per confrontare i risultati . Istruzioni
1
Creare una tabella hash con una chiave e un elenco dei valori associati a ciascun tasto . Cominciando con la prima parola , scorrere l' elenco di parole
2
Ordina le lettere della parola che usano merge sort , heap sort , albero binario di sorta o una specie simile che viene eseguito come O (n log . ( n) ) . Ricordate che gli anagrammi sono identici quando ordinato .
3
cercare la parola ordinati nella tabella hash . Aggiungere la parola non differenziati ai valori collegati al tasto cancelletto se la chiave esiste già. Aggiungere la parola ordinato come una nuova chiave hash e la parola non ordinato come un valore attribuito al tasto cancelletto se la chiave hash non esiste. Ad esempio, dato " topo ", " tar " e "arte ", aggiungere "arte ", come il tasto cancelletto e " topo " come valore , aggiungere " tar" come valore "allegata alla "arte" e aggiungere "arte" come un valore attribuito a " arte".
4
Continuare con ogni parola dell'elenco . Quando si raggiunge la fine della lista , stampare ogni tasto cancelletto e dei suoi valori associati per visualizzare gli anagrammi trovati .
5
Contare i confronti effettuati per verificare che il genere accade in " O (n log ( n) ) "e che il confronto avviene in O (1) .