Ciao. Appena ho visto il tuo algoritmo subito non mi ha convinto il metodo cercaIndice...allora ho provato ad "attaccarlo" con alcuni input e con il seguente
int a [] = {0,2,0,2,0,2,0,2,0,2,0,2};
mi restituisce [0,2,0,0,0,0,2,2,2,2,2,0].
Secondo me non puoi fidarti di questo confronto qui
if(a[i]==num){
return i;
}//if.
Fossero stati oggetti secondo me avresti potuto confrontare il riferimento e in quel caso forse il metodo ordina sarebbe terminato correttamente...non ho avuto il tempo di verificare questa cosa.
Così com'è quindi non credo vada bene.
Poi quando si da un parere su un algoritmo se ne analizza la sua complessità.
Gli algoritmi di ordinamento ottimi in circolazione offrono una complessita temporale O(n logn) nel caso peggiore...non ho analizzato la complessità del tuo algoritmo, ma non credo sia tanto efficiente, per via di tutti i confronti introdotti da alcuni metodi.