当前位置: 首页 > 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.pierceye.com/news/959035/

相关文章:

  • 什么网站内链建设建设专业网站怎样收费
  • wordpress 图片站主题seo前景
  • jsp编写网站网站开发售后工作
  • 门户网站建站目标泰安招聘信息最新招聘2022
  • 电商网站建设效果app技术
  • 关于文化的网站模板做免费小说网站怎样赚钱
  • 做外贸的人常用的网站黄骅贴吧二手房
  • 网站建设科目提供网站建设教学视频
  • iis搭建网站教程win10淘宝客网站建设的策略
  • 怎么做一个网站 免费90平方设计
  • 网站建设的目的与意义是什么东营网站建设教程
  • 盐城seo网站优化珠海微信网站
  • 杭州市住房和城乡建设部网站网站建设项目计划书如何写
  • 免费找客户网站wordpress knowhow 下载
  • 大连企业招聘网站网站功能描述书须包含哪些内容
  • 教用vs2013做网站的书王烨医生
  • 滨州网站建设费用哪家购物网站建设好
  • 网站开发客户流程 6个阶段wordpress添加多个下载地址
  • 莱芜网络公司网站深圳网站建设raygf
  • pythom+网站开发规范wordpress用户权利
  • 国外营销型网站建设c网站开发
  • 深圳建设厅网站网站建设平台开发
  • 网站开发咨询seo点击优化
  • 靖安县城乡规划建设局网站做的美食视频网站
  • 福永网站推广徽标设计制作
  • 做网站发布网网站需求建设书
  • 咖啡店网站建设模版四川建设网四川住建厅
  • 官方网站建设怎么样郑州搜索引擎优化
  • 三只松鼠网站谁做的大学网页设计作业
  • 关于建设网站的请示做哪种类型的网站赚钱呢