Salve ragazzi, sulle slide del mio professore di informatica è illustrato l'algoritmo di shell per quanto riguarda l'ordinamento.
Ve lo propongo nella forma cosi come è riportato.
Codice PHP:
void shell(int A[], int n) {
       
int i,j,salto=n/2;
              while (
salto 0) {
                  for (
i=salto;i<n;i++)        {
                        
j=i-salto;
                             while (
j>=0) {
                                   
k=j+salto;
                                   if(
A[j]<=A[k]) { j=-/*esce*/ }
                                   else {
                                   
scambia(A[j],A[k]);
                                   
j=j-salto;
                                   }
                                               }
                                                        }
                                  
salto salto/2;
                                        }

Tutto ok per quanto riguarda il funzionamento dell'algoritmo ma non riesco a capire perchè l'algoritmo dovrebbe fermarsi:
se il while(salto>0) dipende da salto = salto/2 se divido un numero intero per 2 non otterrò mai zero! La condizione while dipende forse dal fatto che ho definito salto come un intero quindi se
salto = 1 ----> salto /2 = 0??
L'algoritmo è giusto cosi come scritto?