Witam panowie. Napisałem algorytm sortowania przez scalanie. Już się męczę od pół godziny ze znalezieniem błędu i nic. Na konsoli wyświetla się 0 0 0 0 0 0 1. Jeśli ktoś by mnie oświecił dlaczego tak się dzieje i znalazł błąd byłbym bardzo wdzięczny.
#include <iostream>
using namespace std;
void merge(int lewy,int srodkowy,int prawy,int tab[])
{
int i,j,k=0;
const int MAKS=30;
int pom[MAKS]={0};
for(int i=lewy;i<=prawy;i++)
pom[i]=tab[i];
i=lewy;
j=srodkowy+1;
k=lewy;
while(i<=srodkowy and j<=prawy)
{
if(pom[i]<pom[j])
{
tab[k]=pom[i];
k++;
i++;
}
else
{
tab[k]=pom[j];
k++;
j++;
}
while(i<=srodkowy)
{
tab[k]=tab[i];
k++;
i++;
}
}
}
void mergesort(int lewy,int prawy,int tab[])
{
int srodkowy=0;
if(lewy<prawy)
{
srodkowy=(lewy+prawy)/2;
mergesort(lewy,srodkowy,tab);
mergesort(srodkowy+1,prawy,tab);
merge(lewy,srodkowy,prawy,tab);
}
}
int main()
{
const int rozmiar=7;
int tab[rozmiar]={5,3,4,7,8,0,1};
mergesort(0,rozmiar-1,tab);
for(int i=0;i<rozmiar;i++)
cout << tab[i] << " ";
return 0;
}