Merge sort: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Gall0ws (discussione | contributi)
m algoritmo in C: reso più leggibile
Gall0ws (discussione | contributi)
mNessun oggetto della modifica
Riga 50:
Seguono alcune implementazioni in vari [[Linguaggio di programmazione|linguaggi]].
 
#include <stdio.h>
===[[linguaggio C|C]]===
#define LEN 8
 
#include <stdio.h>
void merge(int a[], int left, int center, int right)
#define LEN 8
{
 
void merge(int a[], int lefti, int centerj, intk; right)
int b[10];
{
int i, j, k;
i = left;
int b[10];
j = center+1;
 
i k = left0;
j = center+1;
while ((i<=center) && (j<=right)) {
k = 0;
if (a[i] <= a[j]) {
 
b[k] = a[i];
while((i<=center) && (j<=right)) {
i++;
if (a[i] <= a[j]) {
}
b[k] = a[i];
else {
i++;
b[k] = a[j];
}
j++;
else {
}
b[k] = a[j];
j++;
}k++;
}
 
k++;
while (i<=center) {
}
b[k] = a[i];
 
i++;
while(i<=center) {
b[k] = a[i]++;
}
i++;
k++;
while (j<=right) {
}
b[k] = a[j];
 
j++;
while(j<=right) {
b[k] = a[j]++;
}
j++;
k++;
for (k=left; k<=right; k++)
}
a[k] = b[k-left];
 
}
for(k=left; k<=right; k++)
a[k] = b[k-left];
void mergesort(int a[], int left, int right)
}
{
 
int center;
void mergesort(int a[], int left, int right)
{
if(left<right){
int center;
center = (left+right)/2;
 
mergesort(a, left, center);
if(left<right){
center = mergesort(lefta, center+1, right)/2;
mergesortmerge(a, left, center, right);
}
mergesort(a, center+1, right);
}
merge(a, left, center, right);
}
int main(void)
}
{
 
int main(void)a[LEN], i;
{
for(i=0; i<LEN; i++) {
int a[LEN], i;
printf(": ");
scanf("%d", &a[i]);
for(i=0; i<LEN; i++) {
}
printf(": ");
scanf("%d", &a[i]);
mergesort(a, 0, LEN-1);
}
 
printf("[ ");
mergesort(a, 0, LEN-1);
for(i=0; i<LEN; i++)
printf("[ ");
printf("%d ", a[i]);
 
for(i=0; i<LEN; i++)
printf("%d ]\n", a[i]);
 
return 0;
printf("]\n");
}
 
return 0;
}
 
===[[C++]]===