void heapAdjust(int* data, int index, int heapSize)
{
int lchild = index * 2+1, rchild = index * 2 + 2, largest = index;
if (lchild<heapSize&&data[lchild]>data[largest])
largest = lchild;
if (rchild<heapSize&&data[rchild]>data[largest])
largest = rchild;
if (largest != index)
{
swap(data[largest],data[index]);
heapAdjust(data,largest,heapSize);
}
}
void heapSort(int* data, int heapSize)
{
for (int i = heapSize / 2 - 1; i >= 0; i--)
heapAdjust(data,i,heapSize);
for (int i = heapSize - 1; i >= 0; i--)
{
swap(data[0],data[i]);
heapAdjust(data,0,i);
}
}
{
int lchild = index * 2+1, rchild = index * 2 + 2, largest = index;
if (lchild<heapSize&&data[lchild]>data[largest])
largest = lchild;
if (rchild<heapSize&&data[rchild]>data[largest])
largest = rchild;
if (largest != index)
{
swap(data[largest],data[index]);
heapAdjust(data,largest,heapSize);
}
}
void heapSort(int* data, int heapSize)
{
for (int i = heapSize / 2 - 1; i >= 0; i--)
heapAdjust(data,i,heapSize);
for (int i = heapSize - 1; i >= 0; i--)
{
swap(data[0],data[i]);
heapAdjust(data,0,i);
}
}