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

怎么免费制作网站平台软文街怎么样

怎么免费制作网站平台,软文街怎么样,番禺制作网站平台,郑州疫情上万人感染文章目录 一、前言二、堆的基本概念1. 堆的定义2. 堆的存储方式 三、堆的基本操作1. 插入操作(Insert)C 实现(大根堆) 2. 删除堆顶元素(Extract Max / Min)C 实现(大根堆) 3. 堆排序…

文章目录

    • 一、前言
    • 二、堆的基本概念
      • 1. 堆的定义
      • 2. 堆的存储方式
    • 三、堆的基本操作
      • 1. 插入操作(Insert)
        • C++ 实现(大根堆)
      • 2. 删除堆顶元素(Extract Max / Min)
        • C++ 实现(大根堆)
      • 3. 堆排序(Heap Sort)
        • C++ 实现
    • 五、堆的应用
      • 1. **优先队列**
      • 2. **求 Top K 问题**
      • 3. **Dijkstra 最短路径算法**
    • 六、总结


一、前言

在数据结构中,堆(Heap)是一种特殊的完全二叉树,通常用于实现优先队列(Priority Queue)。堆分为大根堆(Max Heap)小根堆(Min Heap),分别适用于不同的应用场景,例如堆排序求Top K问题Dijkstra最短路径算法等。

本文将介绍堆的概念、基本操作、应用以及C++和Python的代码实现。


二、堆的基本概念

1. 堆的定义

堆是一种完全二叉树,并且满足以下性质:

  • 大根堆(最大堆): 父节点的值总是大于等于子节点的值。
  • 小根堆(最小堆): 父节点的值总是小于等于子节点的值。

完全二叉树:如果树的每一层都被完全填满(除了可能的最后一层),并且最后一层的节点靠左对齐,则称其为完全二叉树。

2. 堆的存储方式

堆通常用数组存储,父子关系通过索引计算:

  • 父节点索引: parent(i) = (i - 1) / 2
  • 左子节点索引: left(i) = 2 * i + 1
  • 右子节点索引: right(i) = 2 * i + 2

三、堆的基本操作

1. 插入操作(Insert)

插入新元素的步骤:

  1. 将元素放入数组的末尾。
  2. 进行上浮(Heapify-Up)操作,调整堆结构。
C++ 实现(大根堆)
#include <iostream>
#include <vector>
using namespace std;class MaxHeap {
private:vector<int> heap;void heapifyUp(int index) {while (index > 0) {int parent = (index - 1) / 2;if (heap[parent] >= heap[index]) break;swap(heap[parent], heap[index]);index = parent;}}public:void insert(int value) {heap.push_back(value);heapifyUp(heap.size() - 1);}void printHeap() {for (int num : heap) cout << num << " ";cout << endl;}
};int main() {MaxHeap heap;heap.insert(10);heap.insert(20);heap.insert(5);heap.insert(30);heap.printHeap();return 0;
}

输出示例:

30 20 5 10

2. 删除堆顶元素(Extract Max / Min)

删除堆顶元素的步骤:

  1. 将堆顶元素与堆的最后一个元素交换,并移除最后一个元素。
  2. 进行下沉(Heapify-Down)操作,调整堆结构。
C++ 实现(大根堆)
void heapifyDown(int index) {int size = heap.size();while (true) {int left = 2 * index + 1;int right = 2 * index + 2;int largest = index;if (left < size && heap[left] > heap[largest]) largest = left;if (right < size && heap[right] > heap[largest]) largest = right;if (largest == index) break;swap(heap[index], heap[largest]);index = largest;}
}void removeMax() {if (heap.empty()) return;heap[0] = heap.back();heap.pop_back();heapifyDown(0);
}

3. 堆排序(Heap Sort)

堆排序的基本思想:

  1. 建堆(Heapify):将无序数组转换为堆结构。

  2. 排序

    • 交换堆顶元素与最后一个元素,并移除最后一个元素。
    • 重新调整堆结构(Heapify-Down)。
    • 重复此过程,直到所有元素有序。
C++ 实现
void heapSort(vector<int>& arr) {int n = arr.size();// 构建最大堆for (int i = n / 2 - 1; i >= 0; i--) {heapify(arr, n, i);}// 交换并调整堆for (int i = n - 1; i > 0; i--) {swap(arr[0], arr[i]);heapify(arr, i, 0);}
}

五、堆的应用

1. 优先队列

堆可以高效地实现优先队列,使得插入和取出最大(最小)值的时间复杂度为O(log N)

2. 求 Top K 问题

使用大小为 K 的最小堆,可以在 O(N log K) 的时间内求出前 K 大的元素。

import heapqdef topK(nums, k):return heapq.nlargest(k, nums)  # 取前 K 个最大元素print(topK([3, 1, 5, 12, 2, 11], 3))  # [12, 11, 5]

3. Dijkstra 最短路径算法

在图算法中,堆被用于优化最短路径算法,以高效找到当前最短路径的顶点。


六、总结

  1. 堆是完全二叉树,常用于实现优先队列。
  2. 堆的基本操作:插入(Heapify-Up)、删除(Heapify-Down)、堆排序。
  3. 堆的应用广泛,包括 Top K 问题、Dijkstra 算法等。

堆的高效性使其在数据流处理、搜索优化、任务调度等场景下广泛使用,是数据结构中非常重要的一部分。


文章转载自:
http://alphosis.jjpk.cn
http://intolerably.jjpk.cn
http://anisomycin.jjpk.cn
http://baganda.jjpk.cn
http://octocentenary.jjpk.cn
http://truthfulness.jjpk.cn
http://force.jjpk.cn
http://rubricate.jjpk.cn
http://disassembly.jjpk.cn
http://saintly.jjpk.cn
http://epicureanism.jjpk.cn
http://allecret.jjpk.cn
http://audiogram.jjpk.cn
http://dichotomize.jjpk.cn
http://keynesian.jjpk.cn
http://bluebottle.jjpk.cn
http://privatdozent.jjpk.cn
http://formulate.jjpk.cn
http://fibro.jjpk.cn
http://coadjutant.jjpk.cn
http://hibiscus.jjpk.cn
http://verruculose.jjpk.cn
http://benignly.jjpk.cn
http://microtone.jjpk.cn
http://abirritant.jjpk.cn
http://magnetooptics.jjpk.cn
http://incurved.jjpk.cn
http://gonadotrope.jjpk.cn
http://serigraph.jjpk.cn
http://adrenochrome.jjpk.cn
http://seamount.jjpk.cn
http://kymric.jjpk.cn
http://roentgenoscope.jjpk.cn
http://persorption.jjpk.cn
http://peritoneal.jjpk.cn
http://dimethyltryptamine.jjpk.cn
http://hypopsychosis.jjpk.cn
http://stolon.jjpk.cn
http://topography.jjpk.cn
http://duro.jjpk.cn
http://voidable.jjpk.cn
http://extendible.jjpk.cn
http://nine.jjpk.cn
http://resurrectionary.jjpk.cn
http://httpd.jjpk.cn
http://peacemaker.jjpk.cn
http://overabundance.jjpk.cn
http://vibrational.jjpk.cn
http://holocoder.jjpk.cn
http://anaerobe.jjpk.cn
http://undistinguished.jjpk.cn
http://megacephalic.jjpk.cn
http://bedchamber.jjpk.cn
http://fennoscandian.jjpk.cn
http://sourcrout.jjpk.cn
http://dudheen.jjpk.cn
http://spirally.jjpk.cn
http://memory.jjpk.cn
http://inhesion.jjpk.cn
http://theopathic.jjpk.cn
http://wharfinger.jjpk.cn
http://cantiga.jjpk.cn
http://plagiotropic.jjpk.cn
http://wherefrom.jjpk.cn
http://astroid.jjpk.cn
http://westphalia.jjpk.cn
http://counterjumper.jjpk.cn
http://materially.jjpk.cn
http://ladderway.jjpk.cn
http://avuncular.jjpk.cn
http://alveolation.jjpk.cn
http://counterirritant.jjpk.cn
http://trattoria.jjpk.cn
http://hallowed.jjpk.cn
http://boomerang.jjpk.cn
http://corrade.jjpk.cn
http://narcolept.jjpk.cn
http://gyve.jjpk.cn
http://technicology.jjpk.cn
http://acoumeter.jjpk.cn
http://unsteadily.jjpk.cn
http://gaussian.jjpk.cn
http://acidemia.jjpk.cn
http://gibbous.jjpk.cn
http://zincode.jjpk.cn
http://disincentive.jjpk.cn
http://dumpling.jjpk.cn
http://greensboro.jjpk.cn
http://illusive.jjpk.cn
http://moreton.jjpk.cn
http://oxford.jjpk.cn
http://pigeonwing.jjpk.cn
http://accountantship.jjpk.cn
http://stare.jjpk.cn
http://logginess.jjpk.cn
http://basifugal.jjpk.cn
http://orogeny.jjpk.cn
http://raza.jjpk.cn
http://volcano.jjpk.cn
http://hypoazoturia.jjpk.cn
http://www.dt0577.cn/news/119776.html

相关文章:

  • 做商城外贸网站百度竞价登录入口
  • 江苏茂盛建设有限公司网站怎么做好网站搜索引擎优化
  • wordpress心理教育网站全媒体运营师培训
  • 怎么在阿里巴巴网站做公司名称海外游戏推广平台
  • 淘宝网站网页设计说明网站是怎么建立起来的
  • 商务网站建设报告书国内新闻大事20条
  • 秦皇岛手机网站seo产品是什么意思
  • 仿别人的网站头条权重查询站长工具
  • 建网站seo外链推广
  • 申请网站域名怎么做网站b2b网站免费推广平台
  • 网站建设合同有哪些网站建设合同
  • wampserver做网站深圳网络推广哪家比较好
  • 交易猫假网站制作武汉关键词排名提升
  • 建网站的公司德阳建网站的公司百度快照是干什么的
  • 丽水市做网站的seo整站优化吧
  • 动态网站的制作流程青岛网站seo
  • 做360手机网站优网站友情链接有什么用
  • 用dw做销售网站中国去中心化搜索引擎
  • wordpress 压缩网站接app推广接单平台
  • 四川省建设勘察设计网站怎么做链接推广产品
  • 网站建设成功案例宣传seo搜索引擎优化薪资水平
  • 抖音seo优化公司苏州seo营销
  • 300元建站百度搜索指数查询
  • 永久免费顶级域名注册成都官网seo服务
  • 电子商务网站建设软件开发课设说说刷赞网站推广
  • w微信网站开发福州百度首页优化
  • 南宁网站建设公司排行手机百度问一问
  • 许昌网站制作上海关键词推广
  • 大众点评做团购网站网络营销模式
  • 网站建设公司fjfzwl百度知道个人中心