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

石家庄市住房城乡建设局网站阿里云域名注册新人

石家庄市住房城乡建设局网站,阿里云域名注册新人,甘肃建筑人才网,手机海报制作免费软件目录 大小堆 堆的实现 堆的创建 堆的销毁 交换 向上调整 向下调整 弹出首个元素 取出首个元素 判空 堆插入 大小堆 大堆:最上面的数字是最小的,越往下越大 小堆:最上面的数字是最大的,越往下越小 堆的复杂程度&#…

目录

大小堆

堆的实现

堆的创建

堆的销毁

交换

向上调整

向下调整

弹出首个元素

取出首个元素

判空

堆插入


大小堆

大堆:最上面的数字是最小的,越往下越大

小堆:最上面的数字是最大的,越往下越小

堆的复杂程度:

由错位相减我们可以知道T(n)= n - log(n-1) = n,所以建堆的复杂程度为O(N)

堆的实现

堆的创建

void HPInit(HP* php)
{assert(php);php->a = NULL;php->size = php->capacity = 0;
}

堆的销毁

void HPDestroy(HP* php)
{assert(php);free(php->a);php->a = NULL;php->size = php->capacity = 0;
}

交换


void Swap(HPDataType* p1, HPDataType* p2)
{HPDataType tmp = *p1;*p1 = *p2;*p2 = tmp;
}

向上调整


void Adjustup(HPDataType* a, int child)
{int parent = (child - 1) / 2;while (child > 0){if (a[child] < a[parent]){Swap(&a[child], &a[parent]);child = parent;int parent = (child - 1) / 2;}else{break;}}
}

向下调整

void AdjustDown(HPDataType* a, int n, int parent)
{int child = parent * 2 + 1;while (child < n){if (child + 1 < n && a[child] > a[child + 1])//先假设左孩子是小的{child++;}if (a[child] < a[parent]){Swap(&a[child], &a[parent]);parent = child;child = parent * 2 + 1;}else {break;}}
}

弹出首个元素

void HPPop(HP* php)
{assert(php);assert(php->size > 0);Swap(&php->a[0], &php->a[php->size - 1]);php->size--;AdjustDown(php->a, php->size, 0);
}

取出首个元素

HPDataType HPTop(HP* php)
{assert(php);assert(php->size);return php->a[0];
}

判空


bool HPEmpty(HP* php)
{assert(php);return php->size == 0;
}

堆插入


void HPPush(HP* php, HPDataType x)
{assert(php);if (php->size == php->capacity){int newcapacity = (php->capacity == php->size == 0 ? 4 : php->capacity * 2);HPDataType* tmp = (HPDataType*)realloc(php->a, newcapacity * sizeof(HPDataType));//扩建的是字节if (tmp == NULL){printf("malloc faild");return;}}php->a[php->size] = x;php->size++;Adjustup(php->a, php->size - 1);
}

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

相关文章:

  • phpcms 移动网站模板太原app制作
  • 上海备案证查询网站查询网站查询如何做淘宝商城网站
  • 怎么建设微信二维码发在网站上优秀学校网站设计
  • 自助服务系统网站自建站推广
  • 网站首页怎么制作过程副标题wordpress
  • 通辽做网站有没有牛商网做的网站
  • wordpress资源下载站自己做网站怎么挣钱
  • 哪个网站买东西最便宜两学一做网站飘窗
  • 永久免费网站推荐计算机域名的格式
  • 外贸网站空间哪个好松阳县建设局网站公示
  • 郑州网站建设熊掌号一个空间怎么放2个网站
  • 旅游网站开发的背景及意义做网站要素
  • 个人未授权做的网站app程序开发的公司
  • 建一个个人网站多少钱凡科互动投票
  • 网站seo招聘广州建设工程交易中心聘用
  • wordpress 学生沈阳seo顾问
  • 做怎么网站wordpress 视频管理 主题
  • phpcms怎么做网站威海网站制作都有哪些
  • 网站界面设计的发展趋势牛商网做网站的思路
  • 重庆快速网站备案官网优化公司
  • 个人如何优化网站有哪些方法网页实现方案
  • 小型网站建设.net建网站的优势
  • 网站开发 培训 周末班国家建设工程注册管理中心网站
  • 做最便宜的网站建设php与H5做网站
  • 网站系统模版虚拟主机可以建设什么网站
  • 网站建设质量如何衡量跨境电商app有哪些
  • 新泰网站开发wordpress那个版本
  • 怎么建设像天猫的网站wordpress广告位插件
  • 信息科技有限公司网站建设辽宁工程造价信息网官网
  • 湖南星大建设集团有限公司网站建设部网站公示钦州公租房摇号查询