Back2dos ha detto tutto, cercherò solo di chiarire ulteriormente il punto che ritengo sia il più importante:
L'ordinamento radix può solo ordinare i valori primitivi effettivi contenuti nell'array, in base ai loro modelli di cifre binarie. In scenari reali di ingegneria del software nel mondo reale, questo caso si incontra quasi mai . Quello che tendiamo a fare molto più spesso è l'ordinamento di matrici di strutture dati più complesse (non primitive), e alcune volte ordiniamo matrici di indici ad altre entità.
Ora, una matrice di indici ad altre entità è in realtà una matrice di primitive, ma l'ordinamento è fornito dall'interfaccia di confronto (e / o delegato in C #) che non confronta gli indici, ma le entità indicizzate dal indici. Pertanto, l'ordinamento non ha assolutamente alcuna relazione con l'ordine dei valori delle primitive, e quindi l'ordinamento di radice è assolutamente inutile per questo scenario.
Un esempio:
Abbiamo una serie di stringhe: [0]="Mike", [1]="Albert", [2]="Zoro". Quindi dichiariamo una matrice di indici per tali stringhe: [0] = 0, [1] = 1, [2] = 2. Quindi, ordiniamo l'array di indici, passandogli un comparatore che non confronta gli stessi indici, ma le stringhe effettivamente riferite da questi indici. Dopo l'ordinamento, la matrice risultante di indici sarà simile a questa: [0] = 1, [1] = 0, [2] = 2. Come puoi vedere, questo ordinamento non ha nulla a che fare con i modelli binari dei valori contenuti nell'array, e tuttavia attraversando questa matrice di indici e recuperando ogni stringa corrispondente, visitiamo le stringhe in ordine ordinato.