当前位置: 首页 > news >正文

网站主页 优帮云桂林象鼻山的由来

网站主页 优帮云,桂林象鼻山的由来,山西住房与建设部网站,泰州专业网站制作公司创建堆的方式有两种#xff0c;一种是一边插入结点#xff0c;一边调用堆的插入方法调整堆#xff0c;这样的时间复杂度就是 O(NlogN)#xff0c;而第二种方式就把时间复杂度缩减到了O(N)#xff0c;它是采用先把结点插入好了#xff0c;然后再来调整堆#xff0c;并不是…创建堆的方式有两种一种是一边插入结点一边调用堆的插入方法调整堆这样的时间复杂度就是 O(NlogN)而第二种方式就把时间复杂度缩减到了O(N)它是采用先把结点插入好了然后再来调整堆并不是一边插入一边调整。 但是从代码层面来看可能会误以为第二种方式的时间复杂度也是O(NlogN)但第二种方式是从下往上建立堆。举个例子如下所示假设堆中存在了N个节点(满足堆的性质)采用第一种方式再创建N个结点那么插入第一个数时就调用了时间复杂度为logN的插入方法插入N个数后时间复杂度为logN。 让我们看看第二种方式会如何 先把N个结点创建到树中把这N个结点具体化我们看到在调整树时第一次是以倒数第二层的结点作为根节点然后来调整这棵子树也就是它的时间复杂度不再是logN了因为远远没到N个结点远远没到整颗树的高度它的时间复杂度应该如下判断在最坏情况下树中每个结点会一直向下查找一直到底假设树高为h,则倒数第二层会向下查找1次倒数第三层会向下查找2次… 倒数第二层结点数为2(h-2),倒数第三层2h-3… JAVA代码实现 import java.util.ArrayList; import java.util.Arrays;//必须传入一个Comparable的实现类因为后续会用到类的内部比较器 public class HeapE extends Comparable {Comparable? super E[] list;//堆--存储Comparable的实现类int size; //堆长度int capacity;//堆容量public Heap(int capacity){this.capacitycapacity;size0;listnew Comparable[capacity1];}//初始化public void Init(E value,int index){if(index0){ list[index] value;size;}elsenew RuntimeException(下标越界);}//创建堆public void Build_Max_Heap(){for(int isize/2;i0;i--){int child0;int parent i;Comparable par_X (E) list[i];for(;parent*2 size;parentchild){childparent*2;if(child1size list[child].compareTo((E) list[child1]) -1)child;if(par_X.compareTo((E) list[child])1)break;list[parent]list[child];}list[parent](E) par_X;}}//插入堆public void Insert(E node){list[size]node;for(int isize;i/20;ii/2){if(i1 || list[i/2].compareTo((E)node)1){list[i]node;break;}else{list[i]list[i/2];}}}//删除堆public E Delete(){Comparable DeleteXlist[1];Comparable Xlist[size--];int child1;int parent1;for(;parent*2size;parentchild){childparent*2;if(child1size list[child].compareTo((E)list[child1])-1 )child;if(X.compareTo((E)list[child])-1)list[parent]list[child];elsebreak;}list[parent]X;return (E)DeleteX;}//测试数据public static void main(String[] args) {HeapSSS heap new Heap(10);heap.Init(new SSS(1),1);heap.Init(new SSS(2),2);heap.Init(new SSS(3),3);heap.Init(new SSS(4),4);heap.Init(new SSS(5),5);heap.Insert(new SSS(6));heap.Build_Max_Heap();heap.Delete();for(int i1;iheap.size;i)System.out.println(heap.list[i]);} } class SSS implements Comparable {int X;Overridepublic int compareTo(Object o) {SSS s2(SSS) o;if(Xs2.X)return 1;if(Xs2.X)return -1;else return 0;}public SSS(int X){this.XX;}Overridepublic String toString() {return SSS{ X X };} }
http://www.sadfv.cn/news/286039/

相关文章:

  • 网站如何建设推广微信分销网站建设官网
  • 武强网站建设WordPress微博图片
  • 专门做电子书的网站邢台做网站咨询
  • 微信支付 企业网站甘肃手机版建站系统价格
  • 什么网站可以做数据调查问卷嵌入式软件开发面试问题
  • 网站推广策划包含的内容电子商务网站规划流程
  • 黄岩区建设规划局网站国际贸易网登录
  • 常见的管理信息系统有哪些南昌网站排名优化
  • 校园网站建设 德育制作网站一般要多少钱
  • 网站建设总结体会域名备案需要多少钱
  • 重庆网站制作1000wordpress 站点标题
  • 宁波江北建设局网站qq代刷网站推广免费
  • 上海网站设计开发公WordPress建站怎么交付
  • 十大效果图网站微信crm管理系统
  • 网站建设找星火龙制作网站的固定成本
  • 广东网站备案多长时间wordpress 个人博客主题
  • 分类信息网站怎么做SEO公司网站建设工作总结
  • 商丘网站网站建设公司代理
  • 品牌网站建设 蝌4蚪小公司网站开发的核心技术
  • 吉林网站建设电话怎么才能免费建网站
  • 广州网站建设招聘做网站怎么弄模板
  • 强化 门户网站建设wordpress官网的文档
  • 美好乡村建设网站网站建设会议记录
  • 装修效果图网站推荐自适应网站m域名必须做301
  • 判断网站是什么系统做的电商运营公司
  • 网站群建设情况个人网站怎么做收款链接
  • 汕头建站模板源码电器网站建设目的
  • 两学一做 网站源码营销型网站建设风格设定
  • 网站做任务挣钱无锡网站制作排名
  • 网站开发思路怎么写wordpress快速部署