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

做的好的h游戏下载网站有哪些在自己电脑上建网站

做的好的h游戏下载网站有哪些,在自己电脑上建网站,房产网名字叫啥好听,国土局网站建设情况定义:堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。 故通常我们用完全二叉树来维护一个一维数组。 分类 : 按照堆的特点可以把堆分为大根堆和小根堆 大根堆:每个结点的值都大于或等于其左右孩子结…

定义:堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。 故通常我们用完全二叉树来维护一个一维数组。

分类 : 按照堆的特点可以把堆分为大根堆和小根堆
大根堆:每个结点的值都大于或等于其左右孩子结点的值
小根堆:每个结点的值都小于或等于其左右孩子结点的值

二叉树的性质:

对于具有 n 个结点的完全⼆叉树,如果按照从上⾄下从左⾄右的数组顺序对所有结点从 0 开始编号,则对于序号为 i 的结点有:                                                                                                          1. 若 i>0 , i 位置结点的双亲序号: (i-1)/2 ; i=0 , i 为根结点编号,⽆双亲结点                           2. 若 2i+1 < n, 则左孩子编号:2*i + 1.                                                                                               3. 若 2i+2 < n, 则右孩子编号:2*i + 2。

堆的关键操作:(以小根堆为例)

1.下沉操作down
对于一个节点,我们判断其节点值与左右节点的值相比较,如果当前节点的值不满足都小于或等于其左右孩子结点的值, 那么我们将节点与左右节点中较小的那个进行交换操作,由于进行了交换,故当前这棵子树中满足了小顶堆的特点,但由于交换了位置,故需要判断被交换位置后的子树位置此时的节点与其新左右孩子的节点值是否满足小顶堆。

2.上浮操作up
对于一个节点我们与其父节点进行比较,如果当前的父节点比其节点值大,则不满足小顶堆的条件,故此时这两个节点需要进行交互,交换完毕后的成为新的父节点,此时由于位置变动,其需要继续与原本父节点的父节点进行比较,直到都满足堆条件为止。

堆的实现:

头文件 heap.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef int HPDataType;
typedef struct Heap
{HPDataType* arr;int size;int capacity;
}Heap;//初始化
void HeapInit(Heap* hp);//销毁
void HeapDestroy(Heap* hp);//插入
void HeapPush(Heap* hp, HPDataType x);//打印
void HeapPrint(Heap* hp);//删除堆顶
void HeapPop(Heap* hp);//取堆顶元素
int HeapTop(Heap* hp);//数据个数
int HeapSize(Heap* hp);//堆的判空
bool HeapEmpty(Heap* hp);void Swap(HPDataType* x, HPDataType* y);
void Up(HPDataType* arr, int child);
void Down(HPDataType* arr, int parent, int n);

源文件 heap.c 

#include"heap.h"//初始化
void HeapInit(Heap* hp)
{assert(hp);hp->arr = NULL;hp->size = hp->capacity = 0;
}//销毁
void HeapDestroy(Heap* hp)
{assert(hp);if (hp->arr)free(hp->arr);hp->arr = NULL;hp->size = hp->capacity = 0;
}//打印
void HeapPrint(Heap* hp)
{assert(hp);for (int i = 0; i < hp->size; i++){printf("%d ", hp->arr[i]);}printf("\n");
}//交换两数
void Swap(HPDataType* x, HPDataType* y)
{HPDataType tmp = *x;*x = *y;*y = tmp;
}//向上调整
void Up(HPDataType* arr, int child)
{int parent = (child - 1) / 2;while (child){//大根堆: >   ,  小根堆:<if (arr[child] < arr[parent]){Swap(&arr[child], &arr[parent]);child = parent;parent = (child - 1) / 2;}else{break;}}
}//插入
void HeapPush(Heap* hp, HPDataType x)
{assert(hp);if (hp->size == hp->capacity)//空间不足{int newcapacity = hp->capacity == 0 ? 4 : 2 * hp->capacity;HPDataType* tmp = (HPDataType*)realloc(hp->arr, newcapacity * sizeof(HPDataType));if (tmp == NULL){perror("realloc");exit(1);}hp->arr = tmp;hp->capacity = newcapacity;//扩容成功}hp->arr[hp->size] = x;Up(hp->arr, hp->size);hp->size++;
}//数据个数
int HeapSize(Heap* hp)
{assert(hp);return hp->size;
}//堆的判空
bool HeapEmpty(Heap* hp)
{assert(hp);return hp->size == 0;
}//向下调整
void Down(HPDataType* arr, int parent, int n)
{int child = 2 * parent + 1;while (child < n){//大根堆: < ,  小根堆: >if (child + 1 < n && arr[child] > arr[child + 1]){child++;}//大根堆: >,  小根堆:  < if (arr[child] < arr[parent]){Swap(&arr[child], &arr[parent]);parent = child;child = 2 * parent + 1;}else{break;}}
}//删除堆顶
void HeapPop(Heap* hp)
{assert(!HeapEmpty(hp));Swap(&hp->arr[0], &hp->arr[hp->size - 1]);hp->size--;Down(hp->arr, 0, hp->size);
}//取堆顶元素
int HeapTop(Heap* hp)
{assert(!HeapEmpty(hp));return hp->arr[0];
}

 


文章转载自:

http://7GtgRbtU.nLygm.cn
http://DSuX7Iu4.nLygm.cn
http://CnU6IYUi.nLygm.cn
http://fBjEUxUz.nLygm.cn
http://qEgeaixo.nLygm.cn
http://cumx2wPP.nLygm.cn
http://FQZsgrO6.nLygm.cn
http://rRKR8rz4.nLygm.cn
http://psR4OZEu.nLygm.cn
http://02mOhQhX.nLygm.cn
http://w0dzpucR.nLygm.cn
http://kyFG13sY.nLygm.cn
http://szKzo1rF.nLygm.cn
http://RKosM122.nLygm.cn
http://MijSrYDt.nLygm.cn
http://o5cVKeA1.nLygm.cn
http://jo46q602.nLygm.cn
http://JtGWQZMs.nLygm.cn
http://MA6Np7Os.nLygm.cn
http://QJadybZK.nLygm.cn
http://XZ9KZy1M.nLygm.cn
http://CtKhDDWv.nLygm.cn
http://Yl2czeMc.nLygm.cn
http://Wp52PokT.nLygm.cn
http://RnRiEW4h.nLygm.cn
http://vRH3UOYu.nLygm.cn
http://kuJgbbZ9.nLygm.cn
http://ls1uQt3C.nLygm.cn
http://SUOUwEaT.nLygm.cn
http://US9Lsoo1.nLygm.cn
http://www.dtcms.com/wzjs/722476.html

相关文章:

  • 网站制作的网站开发国外企业档案馆网站的特色
  • 学生心理健康网站建设论文网站一般用什么工具做
  • wordpress管理软件百度seo在线优化
  • 优化方案化学网站优化排名软件
  • 做IPv6网站升级的公司有哪些网站开发常用图标
  • 定制型网站建设平台免费建网站电话
  • ssh鲜花礼品网站建设app详情页设计
  • 六安网站制作多少钱湘潭网站建设 沟通磐石网络
  • 网站建设有哪些板块常州商城网站建设
  • 惠州企业网站建设选哪家常设中国建设工程法律论坛网站
  • 用wordpress建的网站tinypng图片压缩网站
  • 网站建设需要微信账号和密码适合中考做的微机题网站
  • 响应式网站框架wordpress抓取设置
  • 珠海建站公司网站数据链接怎么做
  • 免费建设淘宝客网站邯郸手机建站价格
  • 微信彩票网站网站建设wordpress手机上打不开
  • 个人定制网站免费搭建购物网站
  • 网站自定义模块宁波网络公司在哪里
  • django 网站开发pxhere素材网站
  • 沈阳设计培训网站建设团员团干部如何登录到系统
  • 企业网站案列适合做浏览器主页的网站
  • 网站开发最流行的语言网站右下角代码
  • 整站优化仿站怎么修改成自己的网站
  • 赤峰是住房和城乡建设局网站洛可可设计公司待遇
  • dede淘宝客网站网站logo提交
  • 网站开发算是软件开发长宁区网站建设网站制
  • 非法网站开发是什么意思百度网站建设工资
  • 软文营销网站建筑模板厂
  • 网站建设报价兴田德润深圳网站制作品牌祥奔科技
  • 重庆专业网站建设首页排名做计量检定的网站