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

专业小程序网站开发企业网站的内容

专业小程序网站开发,企业网站的内容,网站需要几个人,买个域名自己做网站吗堆的概念及结构 如果有一个关键码的集合K { #xff0c; #xff0c; #xff0c;…#xff0c; }#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中#xff0c;并满足#xff1a; 且 ( 且 ) i 0#xff0c;1#xff… 堆的概念及结构 如果有一个关键码的集合K { … }把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中并满足 且  ( 且 ) i 012…则称为小堆(或大堆)。 将根节点最大的堆叫做最大堆或大根堆 节点最小的堆叫做最小堆或小根堆。 堆的性质 堆中某个节点的值总是不大于或不小于其父节点的值 堆总是一棵完全二叉树。 1.下列关键字序列为堆的是 A 100,60,70,50,32,65 B 60,70,65,50,32,100 C 65,100,70,32,50,60 D 70,65,100,32,50,60 E 32,50,100,70,65,60 F 50,100,70,65,60,32 2.已知小根堆为8,15,10,21,34,16,12删除关键字 8 之后需重建堆在此过程中关键字之间的比较次数是。 A 1 B 2 C 3 D 4 3.一组记录排序码为(5 11 7 2 3 17),则利用堆排序方法建立的初始堆为 A(11 5 7 2 3 17) B(11 5 7 2 17 3) C(17 11 7 2 3 5) D(17 11 7 5 3 2) E(17 7 11 3 5 2) F(17 7 11 3 2 5) 4.最小堆[0,3,2,5,7,4,6,8],在删除堆顶元素0之后其结果是 A[3257468] B[2357468] C[2345786] D[2345678] 选择题答案 1.A 2.C 3.C 4.C 堆的实现 1 堆向下调整算法 现在我们给出一个数组逻辑上看做一颗完全二叉树。我们通过从根节点开始的向下调整算法可以把它调整成一个小堆。向下调整算法有一个前提左右子树必须是一个堆才能调整。 int array[] {27,15,19,18,28,34,65,49,25,37}; 堆的创建 下面我们给出一个数组这个数组逻辑上可以看做一颗完全二叉树但是还不是一个堆现在我们通过算法把它构建成一个堆。根节点左右子树不是堆我们怎么调整呢 在此我们有两种建堆方法   1. 利用向上调整的方法从第2 个节点开始一直调整到最后就可以调整成堆。 2. 利用向下调整的方法我们从倒数的第一个非叶子节点的子树开始调整一直调整到根节点的树就可以调整成堆。 但是第一种建堆的时间复杂度为 O(N*logN)第二种建堆的时间复杂度为O(N) 所以我们在此用第二种方法。 堆的插入 先插入一个10到数组的尾上再进行向上调整算法直到满足堆。 堆的删除 删除堆是删除堆顶的数据将堆顶的数据根最后一个数据一换然后删除数组最后一个数据再进行向下调整算法。 堆的代码实现 Heap.h #pragma once #includestdio.h #includestdlib.h #includeassert.h #includestdbool.h #includestring.htypedef int HeapDataType; typedef struct Heap {HeapDataType* a;int size;int capacity; }Heap;void HeapInit(Heap* ph);void HeapInitArray(HeapDataType* a, Heap* ph,int n); void HeapDestroy(Heap* ph); void HeapPush(Heap* ph, HeapDataType x); void HeapPop(Heap* ph); HeapDataType HeapTop(Heap* ph); void AdjustUp(HeapDataType* a, int child); void AdjustDown(HeapDataType* pa, int n, int parent); bool HeapEmpty(Heap* ph); Heap.c #define _CRT_SECURE_NO_WARNINGS 1 #includeHeap.hvoid HeapInit(Heap* ph) {assert(ph);ph-a NULL;ph-size 0;ph-capacity 0; } void HeapDestroy(Heap* ph) {assert(ph);ph-size 0;ph-capacity 0;free(ph-a);ph-a NULL; }//利用其它数组数据建造一个堆存储数据 void HeapInitArray(Heap* ph,HeapDataType* a, int n) {assert(ph);HeapDataType* tmp (HeapDataType*)malloc(sizeof(HeapDataType) * n);if (tmp NULL){perror(malloc fail!);exit(-1);}ph-a tmp;ph-size ph-capacity n;memcpy(ph-a , a , n*sizeof(HeapDataType));//向上调整建堆时间复杂度ON*logN//for (int i 1; i ph-size; i)//{// AdjustUp(ph-a,i);//}//向下调整建堆从第一个不为叶子的节点时间复杂度ONfor(int i (ph-size - 1 - 1)/2; i 0; i--){AdjustDown(ph-a,n,i);} }void Swap(HeapDataType*p1, HeapDataType*p2) {HeapDataType tmp*p1;*p1 *p2;*p2 tmp; }void AdjustDown(HeapDataType* a,int n , int parent) {int child parent*2 1;while (child n){if (child 1n a[child 1] a[child]){child;}if (a[parent] a[child]){Swap(a[parent],a[child]);parent child;child parent * 2 1;}else{break;}} } //建造小堆 void AdjustUp(HeapDataType* a, int child) {int parent (child - 1) / 2;//while(parent0)while (child 0){if (a[child] a[parent]){Swap(a[child], a[parent]);child parent;parent (child - 1) / 2;}else{break;}} } void HeapPush(Heap* ph, HeapDataType x) {assert(ph);if (ph-size ph-capacity){int newcapacity ph-capacity 0 ? 4 : ph-capacity * 2;HeapDataType* tmp(HeapDataType*)realloc(ph-a,newcapacity*sizeof(HeapDataType));if (tmp NULL){perror(realloc fail!);exit(-1);}ph-a tmp;ph-capacity newcapacity;}ph-size;ph-a[ph-size - 1] x;AdjustUp(ph-a, ph-size - 1); } void HeapPop(Heap* ph) {assert(ph);//必须有数据assert(ph-size);Swap(ph-a[0], ph-a[ph-size - 1]);ph-size--;AdjustDown(ph-a,ph-size,0);} HeapDataType HeapTop(Heap* ph) {assert(ph);return ph-a[0]; } bool HeapEmpty(Heap* ph) {assert(ph);return ph-size 0; } Test.c #includeHeap.h int main() {//Heap heap1;//HeapInit(heap1);//HeapPush(heap1,1);//HeapPush(heap1,54);//HeapPush(heap1,48);//HeapPush(heap1,48);//HeapPush(heap1,15);//HeapPush(heap1,35);//int a []{21,54,87,64,87,15};//Heap heap2;//HeapInit(heap2);//for (int i 0; i (sizeof(a)/sizeof(int)); i)//{// HeapPush(heap2, a[i]);//}//while (!HeapEmpty(heap2))//{// printf(%d\n, HeapTop(heap2));// HeapPop(heap2);//}//int a[] { 21,54,87,64,87,15 };//Heap heap2;//HeapInitArray(heap2 ,a,sizeof(a)/sizeof(HeapDataType));//建立了小堆//HeapDestroy(heap2);return 0; } 这个博客如果对你有帮助给博主一个免费的点赞就是最大的帮助❤ 欢迎各位点赞收藏和关注哦❤ 如果有疑问或有不同见解欢迎在评论区留言哦❤ 后续我会一直分享双一流211西北大学软件C数据结构CLinuxMySQL的学习干货以及重要代码的分享
http://www.hkea.cn/news/14287039/

相关文章:

  • 网站优化推广软件网站验证码出不来
  • 沈阳建设网站公司群辉授权wordpress权限
  • 美橙智能网站全球电商平台排行榜前十名
  • 承德市建设局网站电话手机医疗网站建设
  • 网站不兼容怎么办wordpress主题的网站
  • 做网站年薪百万电子商务网站的设计要求包括
  • 什么网站可以自己做配图开公司一年需要多少费用
  • 做电商网站的设计思路有什么意思网站后台管理系统设计
  • 一个企业网站做几个关键词wordpress在媒体库里无法上传图片
  • 知名网站制作服务编写网站程序
  • 如何制作动漫网站模板下载地址深圳品牌沙发
  • 网站后台用户管理系统免费域名注册2023
  • 查网站是不是用shopify做的黄骅贴吧房屋买卖
  • 广州网站设计智能 乐云践新专家网站的建设步骤有哪些
  • 嘉兴市建设教育网站WordPress最好的免费主题
  • 网站建设与优化计入什么科莫汕头app开发
  • 网站为什么被降权怎么做卖卷网站
  • 吕梁网站建设公司查询网站ftp地址
  • 电商网站的好处3月网站备案白名单
  • 营销型网站建设大千站长之家ip查询
  • w3school网站建设教程抖音代运营谈判技巧
  • 广州做网站mxszpt房地产最新消息房价会涨吗
  • 网站建设需要几步广州建设厅网站
  • 衡水网站检测公司网站群建设公司排行榜
  • 网站建设超链接制作深圳手机建站模板
  • 北京华昊网站建设设计配色推荐的网站
  • 公司注册网上核名网站wordpress批量更换文章的关键字
  • 邢台县教育局五库建设网站株洲优化公司
  • 网站建设项目售后服务承诺南京网站设计公司兴田德润放心
  • 重庆的企业网站成都网站建设联系方式