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

自建站系统广西营销型网站公司

自建站系统,广西营销型网站公司,一个网站需要服务器吗,网络广告公司排名前言 之前已经说过堆的特点了,具体文章在数据结构与算法【队列】的Java实现-CSDN博客。因此直接实现堆的其他功能。 建堆 所谓建堆,就是将一个初始的堆变为大顶堆或是小顶堆。这里以大顶堆为例。展示如何建堆。 找到最后一个非叶子节点从后向前&…

前言 

之前已经说过堆的特点了,具体文章在数据结构与算法【队列】的Java实现-CSDN博客。因此直接实现堆的其他功能。

建堆

所谓建堆,就是将一个初始的堆变为大顶堆或是小顶堆。这里以大顶堆为例。展示如何建堆。

  1. 找到最后一个非叶子节点
  2. 从后向前,对每个节点执行下潜

一些规律(0作为根节点时满足)

  • 一棵满二叉树节点个数为 2^h-1,如下例中高度 h=3 节点数是 2^3-1=7
  • 非叶子节点范围为 [0, size/2-1]

建堆的时间复杂度为O(n)。

一个基础的大顶堆实现代码如下

public class MaxHeap {int[] array;int size;public MaxHeap(int capacity) {this.array = new int[capacity];}public MaxHeap(int[] array) {this.array = array;this.size = array.length;heapify();}/*** 获取堆顶元素** @return 堆顶元素*/public int peek() {return array[0];}/*** 删除堆顶元素** @return 堆顶元素*/public int poll() {int top = array[0];swap(0, size - 1);size--;down(0);return top;}/*** 删除指定索引处元素** @param index 索引* @return 被删除元素*/public int poll(int index) {int deleted = array[index];up(Integer.MAX_VALUE, index);poll();return deleted;}/*** 替换堆顶元素** @param replaced 新元素*/public void replace(int replaced) {array[0] = replaced;down(0);}/*** 堆的尾部添加元素** @param offered 新元素* @return 是否添加成功*/public boolean offer(int offered) {if (size == array.length) {return false;}up(offered, size);size++;return true;}// 将 offered 元素上浮: 直至 offered 小于父元素或到堆顶private void up(int offered, int index) {int child = index;while (child > 0) {int parent = (child - 1) / 2;if (offered > array[parent]) {array[child] = array[parent];} else {break;}child = parent;}array[child] = offered;}// 建堆private void heapify() {// 如何找到最后这个非叶子节点  size / 2 - 1for (int i = size / 2 - 1; i >= 0; i--) {down(i);}}// 将 parent 索引处的元素下潜: 与两个孩子较大者交换, 直至没孩子或孩子没它大private void down(int parent) {int left = parent * 2 + 1;int right = left + 1;int max = parent;if (left < size && array[left] > array[max]) {max = left;}if (right < size && array[right] > array[max]) {max = right;}if (max != parent) { // 找到了更大的孩子swap(max, parent);down(max);}}// 交换两个索引处的元素private void swap(int i, int j) {int t = array[i];array[i] = array[j];array[j] = t;}
}
http://www.yayakq.cn/news/896295/

相关文章:

  • wordpress 插件交互团购网站seo
  • 通过主机名访问网站网络营销运营策划
  • 门户网站开发过程视频有限责任公司的优缺点
  • 网站开发需要学php吗安卓是哪里开发的
  • 珠宝首饰网站模板做好的网站怎么优化
  • 云电子网站开发免费的代码分享网站
  • 电商网站建设策划书最新热点新闻事件
  • 精品课程网站建设建议wordpress 相关推荐
  • 普洱专业企业网站建设个人帮忙做网站吗
  • 可以做外贸的网站有哪些页面访问紧急升级中通知怎么关闭
  • 黑龙江省建设厅的网站首页在线代理app
  • 门户网站区别外贸怎么做网站
  • cms 美容网站 模版做盗链电影网站怎么样
  • 云南省建设厅一级建造师网站98同城招聘网信息
  • 网站的毕业设计怎么做响水做网站找哪家好
  • 网站建设公司怎么推广北京个人注册公司流程和费用
  • 深圳企业建站模板网易 自助网站建设
  • 教做凉拌菜的视频网站网站名查询网址
  • 全国十大婚恋网站排名网页分析
  • 网站seo诊断重庆企业网站开发服务
  • 网站 备案查询网站风格分析怎么写
  • 手工网站和自助建站式网站却别wordpress 响应式主题
  • 分类信息网站开发报价邮箱qq登录网页登陆入口
  • 石家庄晋州网站建设学程序员大概要多少钱
  • 扒完网站代码之后怎么做模板二手交易网站怎么做
  • 专业建站源码无锡响应式网站建设
  • 中海外城市建设有限公司网站帝国cms门户网站模板
  • 找人做微信网站服装公司网站
  • 大型网站只做要多少钱亚马逊做国际外贸在哪个网站
  • 保洁公司网站源码杭州本地网站有哪些