Algorytm sortuje lecz pierwsza liczba zostaje na swoim miejscu. Może jestem ślepy, a błąd jest głupi. Proszę o pomoc, z góry dziękuję !
#include <iostream>
using namespace std;
int main()
{
int ile, j, k, x;
cin>>ile;
int tab[ile+1];
for (int i=0; i<ile; i++)
{
cin>>tab[i];
}
for ( int i=2; i<=ile; i++)
{
j=i;
k=j/2;
x=tab[i];
while ((k>0)&&(tab[k]<x))
{
tab[j]=tab[k];
j=k;
k=j/2;
}
tab[j]=x;
}
int m;
for (int i=ile; i>1; i--)
{
swap (tab[1], tab[i]);
j=1;
k=2;
while (k<i)
{
if((k+1<i)&&(tab[k+1]>tab[k]))
m=k+1;
else
m=k;
if (tab[m]<=tab[j])
break;
swap(tab[j],tab[m]);
j=m;
k=j+j;
}
}
for ( int i=0; i<ile; i++)
{
cout<<tab[i]<<" ";
}
return 0;
}