offline
- White Knight

- Počasni građanin
- Pridružio: 04 Jul 2011
- Poruke: 728
- Gde živiš: Loznica
|
Program treba da sortira brojeve pomocu merge sort algoritma.
Sve radi dok unosim brojeve:
Ali kad pritisnem enter:
n je broj elemenata niza
d je duzina bloka
s je broj blokova
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int z[100],y=0,g,test,i,j,o,p,s,d;
void merge(int x[100],int n,int s,int d)
{
for(g=0;g<=(s/2)-1;g++)
{
d=pow(2,g);
s=n/d;
test=d*2;
printf("\n\n 2 n=%d d=%d s=%d",n,d,s);
for(p=0;p<s/2;p++)
{
printf("\n\n 3 n=%d d=%d s=%d",n,d,s);
for(o=0;o<=s/2-1;o++)
{
printf("\n\n 4 n=%d d=%d s=%d",n,d,s);
for(i=0;i<=d-1;)
{
printf("\n\n 5 n=%d d=%d s=%d",n,d,s);
y++;
for(j=d+(d*o);j<=d+i-1+(d*o);)
{
if (x[j+(d*o)]<x[i+(d*o)])
{
z[y]=x[j+(d*o)];
j++;
for(y=0;y<=n-1;y++)
{
x[y]=z[y];
}
}
else
{
z[y]=x[i+(d*o)];
i++;
for(y=0;y<=n-1;y++)
{
x[y]=z[y];
}
}
}
}
}
}
}
}
int main()
{
int x[100],n,z[100],y,g,i,s,d,j,o,p;
printf("Koliki niz hoces?\n");
do{
printf("\n n= ");
scanf("%d",&n);
}while(n<=0 || n%2==1);
for(i=0;i<=n-1;i++){
printf("\nn%d= ",i+1);
scanf("%d",&x[i]);
}
printf("\nx: ");
for(i=0;i<=n-1;i++){
printf("%d ",x[i]);
}
s=n;
d=2;
printf("\n\n n=%d d=%d s=%d",n,d,s);
merge(x,n,s-1,0);
printf("\n\nx: ");
for(i=0;i<=n-1;i++){
printf("%d ",x[i]);
}
return 0;
}
Dakle, gde je problem?
|