2013-10-11 2 views
1

Essayer de briser ce simple pseudo-code en code javaConfondre pseudocode Exemple

for j <- 2 to n 
    do key <- A[j] 
     i <- j - 1 
    while i > 0 and A[i] > key 
      do A[i+1] <- A[i] 
      i <- i - 1 
    A[i + 1] = key 

Il est juste un exemple de tri d'insertion, mais je suis confus quant à ce que l'appel à « faire » sans un certain temps est après la D'abord faire.

J'ai ce jusqu'à présent:

for(int j = 2; j < arrayToSort.size(); j++) 
    { 
     int key, i; 
     do 
     { 
      key = arrayToSort.get(j); 
      i = j -1; 
     }while(i > 0 && arrayToSort.get(i) > key); 
    } 

Répondre

4

En fait, vous confondez la boucle while avec do-while. Le premier do ne fait pas partie de while. Donc, ce n'est pas une boucle do-while.

Il est juste dit de faire l'affectation affichée à l'intérieur de la boucle for, avant le début de la boucle while.

Ainsi, le code équivalent serait comme:

for (int j = 2; j < n; ++j) { 
    int key = A[j]; 
    int i = j - 1; 

    while (i > 0 && A[i] > key) { 
     A[i+1] = A[i]; 
     i = i - 1; // can be replaced with '--i' 
    } 
    A[i + 1] = key 
} 
+0

Oh il est donc littéralement conçu comme un « procédez comme suit » pas un do-while réelle? – rwarner

+0

@kentoe Oui. Exactement. –

+0

Merci beaucoup, c'est logique maintenant. Je n'ai pas vu pseudocode en utilisant "faire" de cette façon – rwarner