Esistono algoritmi di ricerca / ordinamento che suddividono non per due, ma per N.
Un semplice esempio è la ricerca per codifica hash, che richiede tempo O (1).
Se la funzione di hash è di conservazione degli ordini, può essere usata per creare un algoritmo di ordinamento O (N).
(Puoi pensare a qualsiasi algoritmo di ordinamento come solo fare N ricerche per dove dovrebbe andare un numero nel risultato.)
Il problema fondamentale è che, quando un programma esamina alcuni dati e poi inserisce alcuni stati seguenti, quanti stati seguenti sono presenti e quanto sono vicine le loro probabilità?
Quando un computer fa un confronto di due numeri, per esempio, e poi salta o meno, se entrambi i percorsi sono ugualmente probabili, il contatore del programma "conosce" un altro bit di informazione su ciascun percorso, quindi in media ha " imparato "un po '.
Se un problema richiede che gli M bit vengano appresi, allora usando le decisioni binarie non è possibile ottenere la risposta in meno delle decisioni di M.
Quindi, per esempio, cercare un numero in una tabella ordinata di 1024 non può essere fatto in meno di 10 decisioni binarie, se non altro perché un numero minore di risultati non sarebbe sufficiente, ma può certamente essere fatto in più.
Quando un computer prende un numero e lo trasforma in un indice in un array, "apprende" fino a registrare la base 2 del numero di elementi nell'array, e lo fa in tempo costante. Ad esempio, se c'è una tabella di salto di 1024 voci, tutte più o meno ugualmente probabili, quindi saltare attraverso quella tabella "impara" 10 bit. Questo è il trucco fondamentale dietro la codifica hash. Un esempio di classificazione di questo è come è possibile ordinare un mazzo di carte. Hai 52 bidoni, uno per ogni carta. Infila ogni carta nel suo contenitore, e poi raccogli tutte le carte. Nessuna suddivisione richiesta.