I am trying to implement heap sort.

But i am not getting the correct output.

I have a structure consiting of

3 integets

int u

int v

int weight

i have then created a vector of the type of my structure, this all works fine

I need to sort the vector by the weight attribute

I can sort it using normal sort, like bubble etc, or std::sort, but I need to use HeapSort

My code so far is:

Code:`void FixHeap(vector<Point>&HeapList, int n, int i)`

{

int j;

int data;

j=2*i;

data = HeapList[i].weight;

while(j<=n)

{

if((j<n)&&(HeapList[j].weight < HeapList[j+1].weight))

{

j=j+1;

}

if(data >= HeapList[j].weight)

{

break;

}

else

{

HeapList[j/2] = HeapList[j];

}

j = j*2;

}

HeapList[j/2].weight = data;

}

void MakeHeap(vector<Point>&HeapList, int n)

{

int i;

for(i=n/2; i>=1; i--)

{

FixHeap(HeapList, n, i);

}

}

void HeapSort(vector<Point> &HeapList, int n)

{

MakeHeap(HeapList, n);

int i;

int temp;

for(int i = n; i>1; i--)

{

temp = HeapList[i].weight;

HeapList[i] = HeapList[1];

HeapList[1] = temp;

FixHeap(HeapList, i-1, 1);

}

}

I call the function from the main using

I am not sure where i am going wrong.Code:`HeapSort(myHeapList, myHeapList.size()-1);`

Thank you.