Heap sorting:
[Cpp]
Void static Heap_ExChange (int & a, int & B)
{
Int temp =;
A = B;
B = temp;
}
Int Heap_Parent (int n_children)
{
Return (n_children-1)/2;
}
Int Heap_Left (int n_parent)
{
Return 2 * n_parent + 1;
}
Int Heap_Right (int n_parent)
{
Return 2 * (n_parent + 1 );
}
Void static Max_Heapify (int * a, int heap_size, int n_parent)
{
Int n_Max = 0;
Int n_L = Heap_Left (n_parent );
Int n_R = Heap_Right (n_parent );
If (n_L <= heap_size-1 & a [n_L]> a [n_parent])
N_Max = n_L;
Else
N_Max = n_parent;
If (n_R <= heap_size-1 & a [n_R]> a [n_Max])
N_Max = n_R;
If (n_Max! = N_parent)
{
Heap_ExChange (a [n_Max], a [n_parent]);
Max_Heapify (a, heap_size, n_Max );
}
}
Void static Build_Max_Heap (int * a, int size)
{
Int heap_size = size;
For (int I = heap_size/2-1; I> = 0; I --)
{
Max_Heapify (a, heap_size, I );
}
}
Void Heap_Sort (int * a, int size)
{
Int heap_size = size;
Build_Max_Heap (a, heap_size );
For (int I = size-1; I> = 1; I --)
{
Heap_ExChange (a [0], a [I]);
Heap_size --;
Max_Heapify (a, heap_size, 0 );
}
}
Void static Heap_ExChange (int & a, int & B)
{
Int temp =;
A = B;
B = temp;
}
Int Heap_Parent (int n_children)
{
Return (n_children-1)/2;
}
Int Heap_Left (int n_parent)
{
Return 2 * n_parent + 1;
}
Int Heap_Right (int n_parent)
{
Return 2 * (n_parent + 1 );
}
Void static Max_Heapify (int * a, int heap_size, int n_parent)
{
Int n_Max = 0;
Int n_L = Heap_Left (n_parent );
Int n_R = Heap_Right (n_parent );
If (n_L <= heap_size-1 & a [n_L]> a [n_parent])
N_Max = n_L;
Else
N_Max = n_parent;
If (n_R <= heap_size-1 & a [n_R]> a [n_Max])
N_Max = n_R;
If (n_Max! = N_parent)
{
Heap_ExChange (a [n_Max], a [n_parent]);
Max_Heapify (a, heap_size, n_Max );
}
}
Void static Build_Max_Heap (int * a, int size)
{
Int heap_size = size;
For (int I = heap_size/2-1; I> = 0; I --)
{
Max_Heapify (a, heap_size, I );
}
}
Void Heap_Sort (int * a, int size)
{
Int heap_size = size;
Build_Max_Heap (a, heap_size );
For (int I = size-1; I> = 1; I --)
{
Heap_ExChange (a [0], a [I]);
Heap_size --;
Max_Heapify (a, heap_size, 0 );
}
}
Author: wchm_seu