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

视频变成网站怎么做广安 网站建设

视频变成网站怎么做,广安 网站建设,沈阳网站seo公司,沧州快速关键词排名优化文章目录 堆的概念堆的实现HeapPushHeapPop HeapTop HeapSize HeapEmpty堆的应用 堆的概念 堆是一颗完全二叉树每个结点的值都小于子结点的值#xff0c;这颗二叉树为小根堆每个结点的值都大于子结点的值#xff0c;这颗二叉树为大根堆堆的定义如下#xff1a;n个元素的序列… 文章目录 堆的概念堆的实现HeapPushHeapPop HeapTop HeapSize HeapEmpty堆的应用 堆的概念 堆是一颗完全二叉树每个结点的值都小于子结点的值这颗二叉树为小根堆每个结点的值都大于子结点的值这颗二叉树为大根堆堆的定义如下n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时称之为堆。 堆的性质堆中某个节点的值总是不大于或不小于其父节点的值堆总是一棵完全二叉树。 堆的实现 在讲堆的实现前我们首先要知道堆需要实现的功能。 HeapPushHeapPop(删除根结点)HeapTopHeapSizeHeapEmpty 接下来我们要先创建和销毁一个堆。 typedef int HeapType; typedef struct Heap {HeapType* arr;int size;int capacity; }Hp; void HeapInit(Hp* php) {assert(php);php-arr NULL;php-capacity php-size 0; } void HeapDestroy(Hp* php) {assert(php);free(php-arr);php-arr NULL;php-capacity php-size 0; }HeapPush 实现HeapPush时难点在于如何保持整体是一个堆。 即在一个堆的后面插入一个值那么这棵完全二叉树大概率不会是堆那么我们需要将这个值和其父结点比较再根据需要交换值也就是AdjustUp。 那么接下来以小根堆为例实现HeapPush。 void Swap(HeapType* a, HeapType* b) {HeapType tmp *a;*a *b;*b tmp; } void AdjustUp(HeapType* arr, int child) {int parent (child - 1) / 2;while (child0){if (arr[child] arr[parent]){Swap(arr[child], arr[parent]);child parent;parent (child - 1) / 2;}else{break;}} } void HeapPush(Hp* php, HeapType x) {assert(php);if (php-size php-capacity){int newcapacity (php-capacity 0 ? 4 : 2 * php-capacity);HeapType * tmp (HeapType*)realloc(php-arr,newcapacity * sizeof(HeapType));if (!tmp){perror(realloc fail!);exit(-1);}php-arr tmp;php-capacity newcapacity;}php-arr[php-size] x;php-size;AdjustUp(php-arr, php-size - 1); }HeapPop 实现HeapPop也是和HeapPush一样需要考虑的是如何维持整体完全二叉树是一个堆由于我们删除的是根结点如果将根结点的子结点向上调整那么整体二叉树就会空出一个位置导致变成非完全二叉树。 这里的解决办法是将根结点和最后一个结点交换删除最后一个结点然后再对根结点进行向下调整。 void AdjustDown(HeapType* a, int n, int parent) {int child 2 * parent 1;while (childn){if (child 1 n a[child] a[child 1]){child;}if (a[parent] a[child]){Swap(a[child], a[parent]);parent child;child 2 * parent - 1;}else{break;}} } void HeapPop(Hp* php) {assert(php);assert(php-size);Swap(php-arr[0], php-arr[php-size - 1]);php-size--;AdjustDown(php-arr, php-size, 0); }HeapTop HeapSize HeapEmpty 实现了Heap的Push和Pop后那么取根结点的值和判空、判满也是手到擒来的。 HeapType HeapTop(Hp* php) {assert(php);assert(php-size);return php-arr[0]; } size_t HeapSize(Hp* php) {assert(php);return php-size; } bool HeapEmpty(Hp* php) {assert(php);return php-size 0; }堆的应用 实现了堆那么我们肯定要知道能用在什么地方才行实际上堆的应用也是非常广泛的 实现堆排序求Top K值问题求中位数、百分位数 等等。 堆的应用还有很多这里就不一一赘述了。
http://www.hkea.cn/news/14520952/

相关文章:

  • 长沙麓谷网站建设网站建设相关专业
  • 石家庄定制网站建设多少钱饿了么网站怎么做的
  • 求个网站你懂我意思是企业网站备案名称窍门
  • 图片滤镜网站开发建设一个网站需要什么硬件
  • 食品企业网站建设国内网络推广渠道
  • 重庆seo网站收录优化关于网站建设的网站有哪些
  • 访问阿里云主机网站建筑工程东莞网站建设
  • 公司建设网站的报告建设工程造价管理
  • 做一个购物网站中国最知名的网站建设公司
  • 儿童摄影网站怎么做xp系统做网站服务器吗
  • 做网站撘框架北京网站的建立的
  • 北京网站关键词排名公司国内视频培训网站建设
  • wordpress导入网站国内外优秀设计网站
  • 北京网站优化快速排名移动网站开发流行
  • 济南网站的优化宿迁建站网
  • 赣榆区住房和城乡建设局网站建设银行网站会员用户名格式
  • 网站后台不显示验证码seo优化关键词放多少合适
  • 网站推广有哪些手段企业简介比较好的范本
  • 知名手机网站泰安网络信息有限公司
  • 广州做网站服务国外扁平化网站设计欣赏
  • 做cp和网站运营游戏代理公司
  • 郑州做网站公司 汉狮网络专业i深建官方网站
  • 精诚时代 网站谁做的除了WordPress等
  • 网站做支付需要准备什么条件免费的网络营销方式有哪些
  • 酒店建设网站的意义海珠区手机版网站建设
  • 门户网站建设重要性怎么修改网站模版
  • 免费域名网站创建在那个网站找模具做
  • 服装网站的设计理念做网站目录
  • 公司微信网站开发平台长沙本地烟
  • ps做网站页面美工湘潭做网站优化