Visualization of Heap sort by Grzegorz Bancerek

p = 0; i = 0; j = 0; k = 0; size = 0
function LocalHeap(i){
   var j = i;
   if ((2*i <= size)&&(arr[2*i]>arr[i]))
     j = 2*i;
   if ((2*i+1 <= size)&&(arr[2*i+1]>arr[j]))
     j = 2*i+1;
   if (i != j) {
     var x = arr[i]; arr[i] = arr[j]; arr[j] = x;
     if (2*j <= size) LocalHeap(j);
   }
 };  

function MakeHeap() {
  for(var k = Math.floor(size/2); k >= 1; k--) {
    LocalHeap(k);
  }  
};  
   
function HeapSort(){
  MakeHeap();
  while (size > 1) {
    var x = arr[size]; arr[size] = arr[1]; arr[1] = x;
    size--;
    if (size > 1) LocalHeap(1);
  }  
}