1 Star 0 Fork 0

amundsen-code/Sort

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
6.Heap Sort.html 1.63 KB
一键复制 编辑 原始数据 按行查看 历史
chengwh 提交于 2018-08-01 11:19 . first commit
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Heap Sort 堆排序</title>
</head>
<body>
<script>
// 堆排序也是一种很高效的算法,因其把数组当做二叉树来排序而得名。这个算法会根据以下信息,把数组当做二叉树来管理:
// 1.索引0是树的根节点
// 2.除根节点外,任意节点N的父节点是N/2;
// 3.节点L的左节点是2*L
// 4.节点R的右节点是2*R+1
var array = [3, 5, 1, 6, 4, 7, 2];
var heapSort = function(){
var heapSize = array.length;
buildHeap(array);
while(heapSize > 1){
heapSize--;
swap(array, 0, heapSize);
heapify(array, heapSize, 0);
}
}
var buildHeap = function(array){
var heapSize = array.length;
for(var i = Math.floor(array.length / 2); i >= 0; i--){
heapify(array, heapSize, i);
}
}
var heapify = function(array, heapSize, i){
var left = i * 2 + 1,
right = i * 2 + 2,
largest = i;
if(left < heapSize && array[left] > array[largest]){
largest = left;
}
if(right < heapSize && array[right] > array[largest]){
largest = right;
}
if(largest !== i){
swap(array, i, largest);
heapify(array, heapSize, largest);
}
}
var swap = function(array, index1, index2){
[array[index1], array[index2]] = [array[index2], array[index1]];
}
heapSort();
console.log(array);
</script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/amundsen-code/Sort.git
git@gitee.com:amundsen-code/Sort.git
amundsen-code
Sort
Sort
master

搜索帮助