.:AbboZ:.
30-06-2009, 13:25
Ciao a tutti,
questo è un misto tra codice e pseudo codice...
static void qs(int[] a, int inf, int sup) {
if(lunghezza di a[inf..sup] <= 3)
isort(a, inf, sup); // cioè ordina a[inf..sup] con un algoritmo elementare
else {
int pivot = a[inf];
int i = inf; int j = sup;
do {
if(a[i] < pivot) i++;
else if(a[j] > pivot) j--;
else {
scambia a[i] con a[j];
i++; j--;
}
} while(i <= j);
qs(a, inf, j);
qs(a, i, sup);
}
}
Se nell'algoritmo precedente si sostituiscono i confronti a[i]<pivot e a[j]>pivot
rispettivamente con a[i]<= pivot e a[j]>= pivot l'algoritmo non è più corretto. Mi sapreste dire il perchè ?? io proprio nn capisco il motivo...
Vi ringrazio in anticipo per l'aiuto.
Ciao ciao
questo è un misto tra codice e pseudo codice...
static void qs(int[] a, int inf, int sup) {
if(lunghezza di a[inf..sup] <= 3)
isort(a, inf, sup); // cioè ordina a[inf..sup] con un algoritmo elementare
else {
int pivot = a[inf];
int i = inf; int j = sup;
do {
if(a[i] < pivot) i++;
else if(a[j] > pivot) j--;
else {
scambia a[i] con a[j];
i++; j--;
}
} while(i <= j);
qs(a, inf, j);
qs(a, i, sup);
}
}
Se nell'algoritmo precedente si sostituiscono i confronti a[i]<pivot e a[j]>pivot
rispettivamente con a[i]<= pivot e a[j]>= pivot l'algoritmo non è più corretto. Mi sapreste dire il perchè ?? io proprio nn capisco il motivo...
Vi ringrazio in anticipo per l'aiuto.
Ciao ciao