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

佳木斯市郊区建设局网站哪些网站是可以做网络推广的

佳木斯市郊区建设局网站,哪些网站是可以做网络推广的,抚顺建设网站,在线平面设计工具目录 一 二叉树的顺序结构 二 堆的概念及结构 三 堆的实现 1 包含所有接口 (Heap.h) 2 初始化,销毁和交换(Heap.c) 3 向上调整(Heap.c) 4 插入(Heap.c) ​5 向下调整(Heap.c) 6 删除(Heap.c) ​7 打印&#…

目录

一 二叉树的顺序结构

二 堆的概念及结构

三 堆的实现

1 包含所有接口 (Heap.h)

2 初始化,销毁和交换(Heap.c)

3 向上调整(Heap.c)

4 插入(Heap.c)

​5 向下调整(Heap.c)

6 删除(Heap.c)

​7 打印(Heap.c)

8 返回堆顶(Heap.c)

9 判断是否为空(Heap.c)

10 测试(Test.c)


一 二叉树的顺序结构

顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空 间的浪费。而现实中使用中只有堆才会使用数组来存储,关于堆我们后面的章节会专门讲解。二叉树顺 序存储在物理上是一个数组,在逻辑上是一颗二叉树。

二 堆的概念及结构

如果有一个关键码的集合K = { , , ,…, },把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足: <= 且 <= ( >= 且 >= ) i = 0,1, 2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。

堆的性质: 堆中某个节点的值总是不大于或不小于其父节点的值;

堆总是一棵完全二叉树。

三 堆的实现

1 包含所有接口 (Heap.h)

#pragma once
#include<stdbool.h>
#include<assert.h>
#include<stdlib.h>
#include<stdio.h>typedef int HPDataType;
typedef struct Heap
{HPDataType* a;int size;int capacity;
}HP;//向上调整
void AdjustUp(HPDataType* a, int child);//向下调整
void AdjustDown(HPDataType* a, int n, int parent);//交换
void Swap(HPDataType* p1, HPDataType* p2);
//打印
void HeapPrint(HP* php);
//初始化
void HeapInit(HP* php);
//销毁
void HeapDestroy(HP* php);
//插入
void HeapPush(HP* php, HPDataType x);
//删除
void HeapPop(HP* php);
//返回堆顶
HPDataType HeapTop(HP* php);
//是否为空
bool HeapEmpty(HP* php);

2 初始化,销毁和交换(Heap.c)

#include"Heap.h"void HeapInit(HP* php)
{assert(php);php->a = NULL;php->size = php->capacity = 0;
}//销毁
void HeapDestroy(HP* php)
{assert(php);free(php->a);php->a = NULL;php->size = php->capacity = 0;
}//交换
void Swap(HPDataType* p1, HPDataType* p2)
{int tmp = *p1;*p1 = *p2;*p2 = tmp;
}

 3 向上调整(Heap.c)

  时间复杂度 O(logN)

//向上调整
void AdjustUp(HPDataType* a, int child)
{int parent = (child - 1) / 2;while (child > 0){if (a[child] < a[parent])//如果建大堆 就改成 a[child] > a[parent]{Swap(&a[child], &a[parent]);child = parent;parent = (child - 1) / 2;}else{break;}}
}

 4 插入(Heap.c)

//插入
void HeapPush(HP* php, HPDataType x)
{assert(php);if (php->size == php->capacity){int newcapacity = (php->capacity == 0 ? 4 : php->capacity * 2);HPDataType* tmp = (HPDataType*)realloc(php->a, sizeof(HPDataType) * newcapacity);if (tmp == NULL){perror("realloc fail");exit(-1);}php->a = tmp;php->capacity = newcapacity;}php->a[php->size] = x;php->size++;AdjustUp(php->a, php->size - 1);
}

5 向下调整(Heap.c)

  时间复杂度 O(logN)

//向下调整
void AdjustDown(HPDataType* a, int n, int parent)
{int child = parent * 2 + 1;while (child < n){//找小的那个孩子if (child+1 < n && a[child+1] < a[child])//child+1<n  防止数据越界 如果想改成大堆 改成>{child++;}if (a[child] < a[parent])//如果想大堆 改成>{Swap(&a[child], &a[parent]);parent = child;child = parent * 2 + 1;}else{break;}}
}

6 删除(Heap.c)

//删除
void HeapPop(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);
}

7 打印(Heap.c)

//打印
void HeapPrint(HP* php)
{assert(php);for (size_t i = 0; i < php->size; i++){printf("%d ", php->a[i]);}printf("\n");
}

8 返回堆顶(Heap.c)

//返回堆顶
HPDataType HeapTop(HP* php)
{assert(php);assert(php->size > 0);return php->a[0];
}

9 判断是否为空(Heap.c)

bool HeapEmpty(HP* php)
{assert(php);return php->size == 0;
}//堆为空返回1 true
//堆不为空 返回0 false

10 测试(Test.c)

小堆情况(升序)

#include"Heap.h"int main()
{int a[] = { 2,3,5,7,4,6,8,65,100,70,32,50,60 };HP hp;HeapInit(&hp);for (int i = 0; i < sizeof(a) / sizeof(int); i++){HeapPush(&hp, a[i]);}HeapPrint(&hp);while (!HeapEmpty(&hp)){printf("%d ", HeapTop(&hp));HeapPop(&hp);}HeapDestroy(&hp);return 0;
}

但是这种排序方式有明显的缺陷

1、先有一个堆的数据结构

2、空间复杂度复杂度的消耗

所以我们可以改进一下 用真正的堆排序 堆排序有很多细节 所以放在后面一节讲

本节很基础 与栈的实现有很多相似之处 大家也可以看我之前对栈的讲解 以此加深印象

继续加油!

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

相关文章:

  • 辽宁奔之流建设工程有限公司网站WordPress设置模块间距
  • 网站建设类别网站建设经验交流材料
  • 潍坊市建设银行坊子支行网站上海 高端 网站建设
  • 做商城网站应该用什么程序wordpress唯美破解主题
  • 2021年最新的网站银川网站建设广告公司
  • 宁波网站建设培训学校修改 WordPress 模板
  • 做贸易做个外贸网站有必要吗宝安做棋牌网站建设哪家服务好
  • 普陀区网站开发centeros7 安装wordpress
  • 旅游网站怎样做网络宣传黑龙江网络公司网站建设
  • 建立网站的方案中国网重庆频道
  • wordpress更改链接后网站打不开数字营销的定义
  • 电子商务基础网站建设高端网站开发哪家强
  • 学校 网站 建设 目的南京酒店网站制作
  • 怎么做网站维护宣传查看网站服务器信息
  • 洛阳 网站建设公司哪家好店铺推广怎么做
  • 怎么做单页网站织梦怎么做淘客网站
  • 装饰公司网站设计企业网站排名提升软件智能优化
  • 网站被黑了企业网站建设基本流程
  • 做网站公司排行网络营销是什么时候兴起的
  • 凉山州建设银行官方网站京东云擎 wordpress
  • 网站做哪些比较赚钱企业网站流程图
  • 四川通管局网站曲沃网站建设
  • 丝路云网站建设小学网站建设工作小组
  • 网站用什么语言开发的网站找哪家做
  • 企业做网站的必要性深圳app网站建设哪家好
  • 一级a做爰片在线看网站网站为什么做黄词骗流量
  • 设计网站数据建设网站不要服务器可以吗
  • 如何网站建设网页网页设计与制作论文1000字
  • 网站建设黄荣百度写作助手
  • 阿里云配置网站专业做网站的公司