博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆排序
阅读量:5011 次
发布时间:2019-06-12

本文共 1136 字,大约阅读时间需要 3 分钟。

  堆排序是指利用堆这种数据结构所设计的一种排序算法。近似于完全二叉树,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。它的时间复杂度是O(nlog2(n)),空间复杂度是O(1),其算法不稳定。

1 var length;//因为声明的多个函数都需要数据长度,所以把len设置成为全局变量 2 //建立大顶堆 3 function buildMaxHead(arr) {  4     length = arr.length; 5     for (var i = parseInt(length/2); i>=0; i--) { 6         heapify(arr,i); 7     } 8 } 9 //堆调整10 function heapify(arr,i) {11     var left = 2*i+1;12     var right = 2*i+2;13     var largest = i;14     if(left
arr[largest]){15 largest = left;16 }17 if(right
arr[largest]){18 largest = right;19 }20 if(largest!=i){21 swap(arr,i,largest);22 heapify(arr,largest);23 }24 }25 //交换两个数26 function swap(arr,i,j) {27 var temp = arr[i];28 arr[i] = arr[j];29 arr[j] = temp;30 }31 //堆排序32 function heapSort(arr) {33 buildMaxHead(arr);34 for ( var i = arr.length-1; i >0; i--) {35 //console.log(arr);36 swap(arr,0,i);37 length--;38 heapify(arr,0);39 }40 return arr;41 }42 console.log(heapSort([10,3,5,6,2,7,9,4,0,2,5]));

 

转载于:https://www.cnblogs.com/daheiylx/p/9753079.html

你可能感兴趣的文章
12: xlrd 处理Excel文件
查看>>
综合练习:词频统计
查看>>
中文url编码乱码问题归纳整理一
查看>>
Cesium应用篇:3控件(3)SelectionIndicator& InfoBox
查看>>
58. Length of Last Word(js)
查看>>
前端面试题汇总(持续更新...)
查看>>
如何成为F1车手?
查看>>
QT自定义消息
查看>>
Save (Not Permitted) Dialog Box
查看>>
装饰模式(Decorator)
查看>>
任务13:在Core Mvc中使用Options
查看>>
利用Excel 2010数据透视图实现数字的可视化的图形直观展示
查看>>
Sort Colors
查看>>
iview树的修改某个节点,树刷新后自动展开你刚才展开的所有节点
查看>>
oracle服务起不来以及无法监听问题解决
查看>>
Mvc--Html.ActionLink()的用法
查看>>
delphi 基础书籍推荐
查看>>
《面向对象程序设计》2018年春学期寒假及博客作业总结
查看>>
iOS开发UI之KVC(取值/赋值) - KVO (观察某个对象的某个属性的改变)
查看>>
1.7 将一个MxN矩阵所有为0的元素所在行和列全部置0
查看>>