Witam!
Przyszedł czas w mojej nauce na implementację Merge sorta iteracyjnie, co też uczyniłem, niestety Bubblesort działa nawet szybciej od tego, sortuje dobrze, ale nie wiem czemu tak wolno;/
void mergesort(int a[], int lewy, int prawy, int pom[])
{
int start, end, end2,i,start2,temp;
bool koniec=true;
while(koniec)
{
i=lewy;
while(i<=prawy&&koniec)
{
start=i;
temp=i;
i++;
while(a[i]>=a[temp]&&i<=prawy)
{
temp=i;
i++;
}
end=temp;
if(end-start==prawy-lewy)
koniec=false;
else if(i<=prawy)
{
start2=i;
temp=i;
i++;
while(a[i]>a[temp]&&i<=prawy)
{
temp=i;
i++;
}
end2=temp;
scal(a,start,end,start2,end2,pom);
}
}
}
}
void scal(int a[], int start1, int end1, int start2, int end2, int pom[])
{
// cout<<"start1 = "<<start1<<" end1 = "<<end1<<" start2 = "<<start2<<" end2 = "<<end2<<endl;
// system("pause");
for(int i=start1;i<=end2;i++)
{
pom[i]=a[i];
}
int i,j,poz;
i=start1;
j=start2;
poz=start1;
while(i<=end1&&j<=end2)
{
if(pom[i]<pom[j])
{
a[poz]=pom[i];
i++;
}
else
{
a[poz]=pom[j];
j++;
}
poz++;
}
while(i<=end1)
{
a[poz]=pom[i];
i++;
poz++;
}
while(j<=end2)
{
a[poz]=pom[j];
j++;
poz++;
}
}