Merge sort: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 68:
if (left<right){
center = (left+right)/2;
MergeSortmergesort(a, left, right);
MergeSortmergesort(a, center+1, right);
Mergemerge(a, left, center, right);
}
}
Riga 94:
for (k=left; k<=right; k++)
aa[k] = B[k-left];
}
 
===[[linguaggio C++|C++]]===
 
typedef int Item;
void merge(Item a[], int left, int center, int right) {
const int n=8;
static Item aux[n];
int i,j;
for (i = center+1; i > left; i--) aux[i-1] = a[i-1];
for (j = center; j < right; j++) aux[right+center-j] = a[j+1];
for (int k = left; k <= right; k++)
if (aux[j] < aux[i]) a[k] = aux[j--];
else a[k] = aux[i++];
}
void mergesort(Item a[], int left, int right) {
if (left<right) {
int center = (left+right)/2;
mergesort(a, left, center);
mergesort(a, center+1, right);
merge(a, left, center, right);
}
}
int main() {
const int n=8;
int a[n] = {10, 3, 15, 2, 1, 4, 9, 0};
mergesort(a,0,n-1);
return 0;
}