Recentemente mi sono imbattuto in tecniche di ordinamento e, in particolare, in 'insertion sorting.
Sebbene la logica e il metodo siano abbastanza comprensibili, la funzione effettiva sembrava un po 'complessa (fornita di seguito).
void InSort(int AR[], int size)
{
int tmp,j;
AR[0]=INT_MIN; //defined in limits.h , basically the smallest possible value
for(int i=1;i<size;i++)
{
tmp=AR[i];
j=i-1;
while(tmp<AR[j])
{
AR[j+1]=AR[j];
j--;
}
AR[j+1]=tmp;
}
}
Si noti che gli elementi per la funzione sopra sono inseriti da AR [1].
Ho quindi provato il mio tentativo di eseguire l'ordinamento in un modo più semplice, come illustrato di seguito. (Ascendente)
void iSort(int Arr[] , int size)
{
Int temp;
for(int i=1 ; i<size ; i++)
{
for(int j=0 ; j<i ; j++)
{
if(Arr[i]<Arr[j])
{
temp=Arr[i];
Arr[i]=Arr[j];
Arr[j]=temp;
}
}
}
}
Con mio sgomento, qualcuno mi ha detto che sebbene questo metodo eseguirà l'ordinamento, non si qualifica come "Inserisci ordinamento", ma credo ancora che segua lo stesso principio.
È così? Allora, cosa c'è di particolarmente sbagliato nel mio tentativo? Ancora più importante, la seconda funzione si qualifica come ordinamento per inserimento?
-
Vorrei menzionare che sono relativamente nuovo alla programmazione in generale, quindi perdona il mio tentativo apparentemente primitivo, tutto quello che voglio fare è imparare! Inoltre, questa non è la versione recente del C ++, è in realtà vecchiaia, quindi scuse in anticipo!
Sarei felice per ogni input ricevuto, grazie in anticipo!