function sort_heap(arr){
var temp;
var n = arr.length;
for(var i = parseInt(n/2-1);i>=0;i--){
Adjust(arr, i, n);
}
for(var i = n-1;i > 0;i--){
temp = arr[0]; //交换根节点与最后一个叶子节点,要调整的范围减1
arr[0] = arr[i];
arr[i] = temp;
Adjust(arr, 0, i); //不断减小长度、 交换、调整
}
return arr;
}
function Adjust(arr,i,n){
var j = 2*i+1;
var temp = arr[i];
while(j<n){
if(j<n-1 && arr[j]<arr[j+1]){
j++;
}
if(temp >= arr[j]){
break;
}
arr[parseInt((j-1)/2)] = arr[j];
j = j*2+1;
}
arr[parseInt((j-1)/2)] = temp;
}
本文分享自 交互设计前端开发与后端程序设计 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!