Merge sort: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Thijs!bot (discussione | contributi)
Gall0ws (discussione | contributi)
m algoritmo in C: reso più leggibile
Riga 51:
 
===[[linguaggio C|C]]===
 
#include <stdio.h>
#define NLEN 8
void mergesort(int a[], int left, int right);
 
void merge(int a[], int left, int center, int right);
main() {
{
int a[N], k;
for(k=0;int i, j, k<N; k++){
int b[10];
scanf("\t%d ", &a[k]);
 
}
i = left;
mergesort( a, (0), (N-1));
j int= center+1;
for(k=0; k<N; k++){
k = 0;
printf("\t%d ", a[k]);
 
}
while ((i<=center) && (j<=right)) {
}
if (a[i] <= a[j]) { b[k] = a[i]; i++; }
void mergesort(int a[], int left, int right){
b[k] = a[i];
int center;
i++;
if (left<right){
}
center = (left+right)/2;
else {
mergesort(a, left, center);
b[k] = a[j]; j++; k++;
mergesort(a, center+1, right);
j++;
merge(a, left, center, right);
}
 
}
k++;
void merge(int a[], int left, int center, int right) {
}
int i, j, k;
 
int b[10];
while(i <= left; j = center+1; k =) 0;{
b[k] = a[i];
while ((i<=center) && (j<=right)){
i++;
if (a[i] <= a[j]) { b[k] = a[i]; i++; }
k++;
else { b[k] = a[j]; j++;}
}
k++;
 
}
while (ij<=centerright) {
b[k] = a[ij]; i++; k++;
j++;
}
k++;
while (j<=right) {
}
b[k] = a[j]; j++; k++;
 
}
for (k=left; k<=right; k++)
a[k] = b[k-left];
}
 
void mergesort(int a[], int left, int right);
{
int center;
 
if (left<right){
center = (left+right)/2;
mergesort(a, left, center);
void mergesort(int a[], int leftcenter+1, int right){;
mergesort merge(a, left, center+1, right);
}
}
 
int main(void)
{
int a[NLEN], ki;
k++;
for(ki=0; ki<NLEN; ki++) {
printf(": ");
scanf("\t%d ", &a[ki]);
}
 
mergesort( a, (0), (NLEN-1));
printf("[ ");
 
for(i=0; i<LEN; i++)
printf("\t%d ", a[ki]);
 
printf("]\n");
 
return 0;
}
 
===[[C++]]===