для школьного проекта. Я решил решить проблему путем кодирования HeapSort, но у меня есть проблема. («вектор» - вектор для сортировки, а «n» - количество элементов в «векторе»)
Вот мой код:
void fixHeap(int position,int length)
{
int next=2*position;
int temp;
while (next<=length)
{
if (next<length && vector[next]<vector[next+1])
{
next++;
}
if (vector[position]<vector[next])
{
temp=vector[position];
vector[position]=vector[next];
vector[next]=temp;
position=next;
next=2*position;
}
else
{
return;
}
}
}
void heapSort()
{
int counter;
int temp;
for(counter=(n-1)/2;counter!=0;counter--)
{
fixHeap(counter,n-1);
}
for(counter=n-1;counter>0;counter--)
{
temp=vector[counter];
vector[counter]=vector[0];
vector[0]=temp;
fixHeap(0,counter-1);
}
display();
}
Когда я делаю fixHeap (0, n-1), я ставлю рядом с 0, а затем позиция также на 0, поэтому я не правильно делаю Heap правильно. Может ли кто-нибудь помочь мне исправить это?
Также есть ли другие ошибки, которые вы заметили, которые я, возможно, упустил из виду?