function Buildheap (data) {var i = Math.floor ((data.length-1)/2);
while (i) {transfer (DATA,I,DATA.LENGTH-1);
i--;
} transfer (DATA,I,DATA.LENGTH-1);
function transfer (data, I, Len) {var left = 2*i + 1;
var right = 2*i+ 2;
var max = i;
var temp;
if (i > Math.floor (LEN/2)) {return;
} if (left <= len && data[left] > Data[max]) {max = left;
} if (right <= len && data[right] > Data[max]) {max = right;
} if (max!== i) {temp = Data[i];
Data[i] = Data[max];
Data[max] = temp;
Transfer (data, Max, Len);
} function Heapsort (data) {if (Data.length = 1) {return data;
var i = data.length-1;
var temp;
Buildheap (data);
Console.log (data) while (i > 0) {temp = Data[i];
Data[i] = data[0];
DATA[0] = temp;
Transfer (data, 0, i-1);
i--;
} return data;
function GetData () {var arr = [];
var i = 0;
while (I <) {Arr.push (~ ~ (math.random () * 100));
i++;
return arr;
The var data = GetData ()//[50, 89, 57, 19, 68, 56, 49, 45, 32, 48];
Console.log (data); Console.log (Heapsort (data));