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

网站文字优化方案自适应网站建设沈阳

网站文字优化方案,自适应网站建设沈阳,什么是传统网站,手机对比平台1.大顶堆和小顶堆原理 什么是堆 堆(Heap)是计算机科学中一类特殊的数据结构,通常是一个可以被看作一颗完全二叉树的数组对象。 完全二叉树 只有最下面两层节点的度可以小于2,并且最下层的叶节点集中在靠左连续的边界 只允许最后…

1.大顶堆和小顶堆原理

  • 什么是堆

    • 堆(Heap)是计算机科学中一类特殊的数据结构,通常是一个可以被看作一颗完全二叉树的数组对象。

    • 完全二叉树

      • 只有最下面两层节点的度可以小于2,并且最下层的叶节点集中在靠左连续的边界

      • 只允许最后一层有空缺结点且空缺在右边,完全二叉树需保证最后一个节点之前的节点都齐全;

      • 对任一结点,如果其右子树的深度为j,则其左子树的深度必为j或j+1

在这里插入图片描述

  • 什么是大顶堆(最大堆)
    • 大顶堆是一种完全二叉树,其每个父节点的值都大于或等于其子节点的值,即根节点的值最大。
    • 每个节点的两个子节点顺序没做要求,和之前的二叉查找树不一样。

在这里插入图片描述

  • 什么是小顶堆(最小堆)

    • 小顶堆是一种完全二叉树,其每个父节点的值都小于或等于其子节点的值,即根节点的值最小。

    • 每个节点的两个子节点顺序没做要求,和之前的二叉查找树不一样

在这里插入图片描述

  • 存储原理

    • 一般升序采用大顶堆,降序采用小顶堆。
    • 堆是一种非线性结构,用数组来存储完全二叉树是非常节省空间的,把堆看作一个数组。
      • 方便操作,一般数组的下标0不存储,直接从1节点存储。
    • 堆其实就是利用完全二叉树的结构来维护一个数组
    • 数据下表为k的节点
      • 左子节点下标为2*k的节点。
      • 右子节点就是下表为2*k+1的节点。
      • 父节点就是下标为k/2取证的节点。
  • 公式描述一下堆的定义

    • 大顶堆:arr[k] >= arr[2k+1] && arr[k] >= arr[2k]
    • 小顶堆:arr[k] <= arr[2k+1] && arr[k] <=arr[ak]
  • 小顶堆动画效果演示

  • 往堆中插入新元素,就是往数组中从索引0或1开始依次存放数据,但是顺序需要满足堆的特性

  • 如何让堆满足:
    • 不断比较新节点 arr[k]和对应父节点arr[k/2]的大小,根据情况交互元素位置
    • 直到找到的父节点比当前新增节点大则结束

在这里插入图片描述

2.大顶堆构编码实现

  • 大顶堆(最大堆)

    • 大顶堆是一种完全二叉树,其每个父节点的值都大于或等于其子节点的值,即根节点的值最大

在这里插入图片描述

  • 编码实现
public class Heap {//用数组存储堆中的元素private int[] items;//堆中元素的个数private int num;public Heap(int capacity) {//数组下标0不存储数据,所以容量+1this.items = new int[capacity + 1];this.num = 0;}/*** 判断堆中 items[left] 元素是否小于 items[right] 的元素*/private boolean rightBig(int left, int right) {return items[left] < items[right];}/*** 交换堆中的两个元素位置*/private void swap(int i, int j) {int temp = items[i];items[i] = items[j];items[j] = temp;}/*** 往堆中插入一个元素,默认是最后面,++num先执行,然后进行上浮判断操作*/public void insert(int value) {items[++num] = value;up(num);}/*** 使用上浮操作,新增元素后,重新堆化* 不断比较新节点 arr[k]和对应父节点arr[k/2]的大小,根据情况交互元素位置* 直到找到的父节点比当前新增节点大则结束* <p>* 数组中下标为 k 的节点* 左子节点下标为 2*k 的节点* 右子节点就是下标 为 2*k+1 的节点* 父节点就是下标为 k/2 取整的节点*/private void up(int k) {//父节点 在数组的下标是1,下标大于1都要比较while (k > 1) {//比较 父结点 和 当前结点 大小if (rightBig(k / 2, k)) {//当前节点大,则和父节点交互位置swap(k / 2, k);}// 往上一层比较,当前节点变为父节点k = k / 2;}}/*** 删除堆中最大的元素,返回这个最大元素*/public int delMax() {int max = items[1];//交换索引 堆顶的元素(数组索引1的)和 最大索引处的元素,放到完全二叉树中最右侧的元素,方便后续变为临时根结点// 为啥不能直接删除顶部元素,因为删除后会断裂,成为森林,所以需要先交互,再删除swap(1, num);//最大索引处的元素删除掉, num--是后执行,元素个数需要减少1items[num--] = 0;//通过下浮调整堆,重新堆化down(1);return max;}/*** 使用下沉操作,堆顶和最后一个元素交换后,重新堆化* 不断比较 节点 arr[k]和对应 左节点arr[2*k] 和 右节点arr[2*k+1]的大小,如果当前结点小,则需要交换位置* 直到找到 最后一个索引节点比较完成  则结束* 数组中下标为 k 的节点* 左子节点下标为 2*k 的节点* 右子节点就是下标 为 2*k+1 的节点* 父节点就是下标为 k/2 取整的节点*/private void down(int k) {//最后一个节点下标是numwhile (2 * k <= num) {//记录当前结点的左右子结点中,较大的结点int maxIndex;if (2 * k + 1 <= num) { //2 * k + 1 <= num 是判断 确保有右节点//比较当前结点下的左右子节点哪个大if (rightBig(2 * k, 2 * k + 1)) {maxIndex = 2 * k + 1;} else {maxIndex = 2 * k;}} else {maxIndex = 2 * k;}//比较当前结点 和 较大结点的值, 如果当前节点较大则结束if (items[k] > items[maxIndex]) {break;} else {//否则往下一层比较,当前节点k索引 变换为 子节点中较大的值swap(k, maxIndex);//变换k的值k = maxIndex;}}}public static void main(String[] args) {Heap heap = new Heap(20);heap.insert(42);heap.insert(48);heap.insert(93);heap.insert(21);heap.insert(90);heap.insert(9);heap.insert(3);heap.insert(40);heap.insert(32);int top;System.out.println("输出堆:");while ((top = heap.delMax()) != 0) {System.out.print(top + " ");}}
}

在这里插入图片描述

http://www.yayakq.cn/news/281817/

相关文章:

  • 网站建设实践试卷wordpress使用的数据库编码
  • 互动平台抽手机东莞网站排名优化价格
  • 网站软件下载安装上海到北京的火车
  • vvic网站一起做网店海外注册域名的网站
  • 公司建网站哪家衡水市网站建设公司
  • 网上商城 网站建设 解决方案想自学做网站
  • 小型服务器做网站做网站定制开发的公司
  • 做网站主要是做什么3 建设营销型网站流程图
  • 临沂网站建设团队哪里建个人网站好
  • 临沂企业自助建站系统网站建设來超速云建站
  • 建设网站的标语网站建设技术交流
  • 大气的企业网站设计如何推广引流
  • 池州家居网站建设怎么样广州白云区最新信息
  • 网站运营维护工作 基本内容包括室内装修设计软件免费版下载
  • 金湖建设局网站星火网站建设
  • 1元购网站建设网站开发哪种专业
  • 手机网站设计欣赏个人养老保险余额怎么查询
  • 网站 免费 认证网站域名怎么看
  • 大连市平台网站贵州省住房和城乡建设厅网站首页
  • 做设计有哪些好用的素材网站有哪些wordpress扩展性
  • 网站站点文件夹权限设置wordpress iis7伪静态
  • 一个网站用多少数据库表大学哪个专业可以做网站
  • wordpress多个网站wordpress导航字体颜色
  • 社区服务呼叫系统 网站的建设百度商桥网站代码去哪里添加
  • 网站设计制作新参考价格网站开发前端和后端用什么语言
  • 山西网站建设服务seo职业
  • 手机网站价格知名企业营销案例100例
  • 虚拟主机能建设网站吗wordpress 插件使用
  • 网站建设人才utc+wordpress
  • 长沙哪里做网站价格便宜百度指数人群画像怎么看