как-то так ...
var arr = [4,7,6,5,8,2,0,3,1,12,4,7,6,5,8,2,0,3,12,4,7,6,5,8,2,0,3,1,12,4,7,6,5,8,2,3];
function sort(b) {
function d(a, c) {
var d = b[a];
b[a] = b[c];
b[c] = d
}
for (var c = b.length; c--;) {
for (;;) {
for (var e = !0, a = 0; a < (c - 1) / 2; a++)
b[a] < b[2 * a + 1] && (d(a, 2 * a + 1), e = !1),
b[a] < b[2 * a + 2] && (d(a, 2 * a + 2), e = !1);
if (e) break
}
b[0] > b[c] && d(0, c)
}
return b
};
alert(arr + "\n" +sort(arr)+"\n"+arr)