网站开发需求书打码兔怎么和网站做接口

news/2025/9/28 7:27:23/文章来源:
网站开发需求书,打码兔怎么和网站做接口,大连网站排名,亿方云企业网盘二叉堆的介绍 二叉堆是完全二元树或者是近似完全二元树#xff0c;按照数据的排列方式可以分为两种#xff1a;最大堆和最小堆。 最大堆#xff1a;父结点的键值总是大于或等于任何一个子节点的键值#xff1b; 最小堆#xff1a;父结点的键值总是小于或等于任何一个子…二叉堆的介绍 二叉堆是完全二元树或者是近似完全二元树按照数据的排列方式可以分为两种最大堆和最小堆。 最大堆父结点的键值总是大于或等于任何一个子节点的键值 最小堆父结点的键值总是小于或等于任何一个子节点的键值。 示意图如下 二叉堆一般都通过”数组”来实现。数组实现的二叉堆父节点和子节点的位置存在一定的关系。有时候我们将”二叉堆的第一个元素”放在数组索引0的位置有时候放在1的位置。当然它们的本质一样(都是二叉堆)只是实现上稍微有一丁点区别。 假设”第一个元素”在数组中的索引为 0 的话则父节点和子节点的位置关系如下 (01) 索引为i的左孩子的索引是 (2*i1); (02) 索引为i的左孩子的索引是 (2*i2); (03) 索引为i的父结点的索引是 floor((i-1)/2); 实现 以最大堆为例 template class T class MaxHeap{private:T *mHeap; // 数据int mCapacity; // 总的容量int mSize; // 实际容量private:// 最大堆的向下调整算法void filterdown(int start, int end);// 最大堆的向上调整算法(从start开始向上直到0调整堆)void filterup(int start);public:MaxHeap();MaxHeap(int capacity);~MaxHeap();// 返回data在二叉堆中的索引int getIndex(T data);// 删除最大堆中的dataint remove(T data);// 将data插入到二叉堆中int insert(T data);// 打印二叉堆void print(); }; 添加 假设在最大堆[90,80,70,60,40,30,20,10,50]种添加85需要执行的步骤如下 如上图所示当向最大堆中添加数据时先将数据加入到最大堆的最后然后尽可能把这个元素往上挪直到挪不动为止 将85添加到[90,80,70,60,40,30,20,10,50]中后最大堆变成了[90,85,70,60,80,30,20,10,50,40]。 /** 最大堆的向上调整算法(从start开始向上直到0调整堆)** 注数组实现的堆中第N个节点的左孩子的索引值是(2N1)右孩子的索引是(2N2)。** 参数说明* start -- 被上调节点的起始位置(一般为数组中最后一个元素的索引)*/ template class T void MaxHeapT::filterup(int start) {int c start; // 当前节点(current)的位置int p (c-1)/2; // 父(parent)结点的位置 T tmp mHeap[c]; // 当前节点(current)的大小while(c 0){if(mHeap[p] tmp)break;else{mHeap[c] mHeap[p];c p;p (p-1)/2; } }mHeap[c] tmp; }/* * 将data插入到二叉堆中** 返回值* 0表示成功* -1表示失败*/ template class T int MaxHeapT::insert(T data) {// 如果堆已满则返回if(mSize mCapacity)return -1;mHeap[mSize] data; // 将数组插在表尾filterup(mSize); // 向上调整堆mSize; // 堆的实际容量1return 0; } 删除 假设从最大堆[90,85,70,60,80,30,20,10,50,40]中删除90需要执行的步骤如下 /* * 最大堆的向下调整算法** 注数组实现的堆中第N个节点的左孩子的索引值是(2N1)右孩子的索引是(2N2)。** 参数说明* start -- 被下调节点的起始位置(一般为0表示从第1个开始)* end -- 截至范围(一般为数组中最后一个元素的索引)*/ template class T void MaxHeapT::filterdown(int start, int end) {int c start; // 当前(current)节点的位置int l 2*c 1; // 左(left)孩子的位置T tmp mHeap[c]; // 当前(current)节点的大小while(l end){// l是左孩子l1是右孩子if(l end mHeap[l] mHeap[l1])l; // 左右两孩子中选择较大者即mHeap[l1]if(tmp mHeap[l])break; //调整结束else{mHeap[c] mHeap[l];c l;l 2*l 1; } } mHeap[c] tmp; }/** 删除最大堆中的data** 返回值* 0成功* -1失败*/ template class T int MaxHeapT::remove(T data) {int index;// 如果堆已空则返回-1if(mSize 0)return -1;// 获取data在数组中的索引index getIndex(data); if (index-1)return -1;mHeap[index] mHeap[--mSize]; // 用最后元素填补filterdown(index, mSize-1); // 从index位置开始自上向下调整为最大堆return 0; } 二叉堆的C实现(完整源码) /*** 二叉堆(最大堆)** author skywang* date 2014/03/07*/#include iomanip #include iostream using namespace std;template class T class MaxHeap{private:T *mHeap; // 数据int mCapacity; // 总的容量int mSize; // 实际容量private:// 最大堆的向下调整算法void filterdown(int start, int end);// 最大堆的向上调整算法(从start开始向上直到0调整堆)void filterup(int start);public:MaxHeap();MaxHeap(int capacity);~MaxHeap();// 返回data在二叉堆中的索引int getIndex(T data);// 删除最大堆中的dataint remove(T data);// 将data插入到二叉堆中int insert(T data);// 打印二叉堆void print(); };/* * 构造函数*/ template class T MaxHeapT::MaxHeap() {new (this)MaxHeap(30); }template class T MaxHeapT::MaxHeap(int capacity) {mSize 0;mCapacity capacity;mHeap new T[mCapacity]; } /* * 析构函数*/ template class T MaxHeapT::~MaxHeap() {mSize 0;mCapacity 0;delete[] mHeap; }/* * 返回data在二叉堆中的索引** 返回值* 存在 -- 返回data在数组中的索引* 不存在 -- -1*/ template class T int MaxHeapT::getIndex(T data) {for(int i0; imSize; i)if (datamHeap[i])return i;return -1; }/* * 最大堆的向下调整算法** 注数组实现的堆中第N个节点的左孩子的索引值是(2N1)右孩子的索引是(2N2)。** 参数说明* start -- 被下调节点的起始位置(一般为0表示从第1个开始)* end -- 截至范围(一般为数组中最后一个元素的索引)*/ template class T void MaxHeapT::filterdown(int start, int end) {int c start; // 当前(current)节点的位置int l 2*c 1; // 左(left)孩子的位置T tmp mHeap[c]; // 当前(current)节点的大小while(l end){// l是左孩子l1是右孩子if(l end mHeap[l] mHeap[l1])l; // 左右两孩子中选择较大者即mHeap[l1]if(tmp mHeap[l])break; //调整结束else{mHeap[c] mHeap[l];c l;l 2*l 1; } } mHeap[c] tmp; }/** 删除最大堆中的data** 返回值* 0成功* -1失败*/ template class T int MaxHeapT::remove(T data) {int index;// 如果堆已空则返回-1if(mSize 0)return -1;// 获取data在数组中的索引index getIndex(data); if (index-1)return -1;mHeap[index] mHeap[--mSize]; // 用最后元素填补filterdown(index, mSize-1); // 从index位置开始自上向下调整为最大堆return 0; }/** 最大堆的向上调整算法(从start开始向上直到0调整堆)** 注数组实现的堆中第N个节点的左孩子的索引值是(2N1)右孩子的索引是(2N2)。** 参数说明* start -- 被上调节点的起始位置(一般为数组中最后一个元素的索引)*/ template class T void MaxHeapT::filterup(int start) {int c start; // 当前节点(current)的位置int p (c-1)/2; // 父(parent)结点的位置 T tmp mHeap[c]; // 当前节点(current)的大小while(c 0){if(mHeap[p] tmp)break;else{mHeap[c] mHeap[p];c p;p (p-1)/2; } }mHeap[c] tmp; }/* * 将data插入到二叉堆中** 返回值* 0表示成功* -1表示失败*/ template class T int MaxHeapT::insert(T data) {// 如果堆已满则返回if(mSize mCapacity)return -1;mHeap[mSize] data; // 将数组插在表尾filterup(mSize); // 向上调整堆mSize; // 堆的实际容量1return 0; }/* * 打印二叉堆** 返回值* 0表示成功* -1表示失败*/ template class T void MaxHeapT::print() {for (int i0; imSize; i)cout mHeap[i] ; }int main() {int a[] {10, 40, 30, 60, 90, 70, 20, 50, 80};int i, len(sizeof(a)) / (sizeof(a[0])) ;MaxHeapint* treenew MaxHeapint();cout 依次添加: ;for(i0; ilen; i){cout a[i] ;tree-insert(a[i]);}cout \n 最 大 堆: ;tree-print();i85;tree-insert(i);cout \n 添加元素: i;cout \n 最 大 堆: ;tree-print();i90;tree-remove(i);cout \n 删除元素: i;cout \n 最 大 堆: ;tree-print();cout endl; system(pause);return 0; } 效果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌浏览器网页版入口手机版东莞网站seo推广

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目,旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本,还能保留公式、图表、目…

代做机械设计的网站开发公司网签过期

Math中定义了许多的方法,通过Math类就能直接调用,均为static类型。 1、 调用形式:Math.方法名2、三角函数方法: static double sin(double a ) : 返回角的三角正弦static double cos(double a) : 返回角的三角余弦s…

copyright技术支持 东莞网站建设郑州同济医院收费高吗

zipkin 自定义采样率在第一篇文章的后续部分,这一次我们将编写一些更有用的自定义收集器:用于按给定的标准进行分组,采样输入,批量处理以及在固定大小的窗口上滑动。 分组(计数事件,直方图) 假…

电子商务和网站建设区别最新wordpress免费主题

简介 原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制已有对象来生成新的对象,而无需再次使用构造函数。 描述 原型模式通过复制现有对象来创建新的对象,而无需显式地调用构造函数或暴露对象的创建…

VS2022激活秘钥

今天提醒我试用期过了 ,于是在网上找了个秘钥: VHF9H-NXBBB-638P6-6JHCY-88JWH

NOIP2025模拟赛24

T1 T2 T3 T4\(\color{#52C41A} 普及+/提高\) \(\color{#3498DB} 提高+/省选-\) \(\color{#9D3DCF} 省选/NOI-\) \(\color{#0E1D69} NOI/NOI+\)参赛网址:https://oj.33dai.cn/d/TYOI/contest/689ad798c5d9c2f14c20b17f…

郑州中原区建设局网站柳江企业网站开发公司

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 一、内省是什么、实现方式: 内省(Introspector)是Java语言对Bean类属性、事件的一种缺省处理方法。…

亿诚建设项目管理有限公司网站四字母net做网站怎么样

数据架构的重要构件之一是数据模型,当然从数据架构的视角来说的数据模型是指企业级数据模型。本篇文章更多是讨论如何设计和管理数据模型,此处的数据模型是泛指在组织中通过数据建模的过程,来发现、分析和确定数据需求范围,并用于…

五屏网站建设代理商珠海网站建设电话

文章目录 电压源与电流源简介1.电压源的本质2.电流源的本质3.Q&A 推荐学习 电压源与电流源简介 1.电压源的本质 无论带什么样的负载,输出电压保持不变的电路才是电压源。 一个电路想要输出电压不变,那它必须有强有力的输出电流能力,而不…

grammar(?

随机重排函数,shuffle(begin(),end(),rnd / rand()); (mt19937 rnd(time(0))😉 scanf读入printf输出 long double 需要用 %Lf

外贸电子网站建设南京seo关键词优化服务

一、堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树; (2)堆树中某个节点的值总是不大于或不小于其孩子节点的值; (3)堆树中每个节点的子树都是堆树。 当父节点的键…

免费招聘网站平台有哪些wordpress右侧空白

第二周作业:本周作业内容:1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。touch,rm,mv,cp,file,ls,chmod,chown,ln,rename,touch 修改文件atime,如果文件不存在,那么创建该文件。rm&#xff1…

网站 外包 版权网站域名价值查询

大模型日报 2024-05-05 大模型新闻: Techs new arms race: The billion-dollar battle to build AI - 小型专业化模型可以为各种细分应用提供关键的、高效的能力,这是AI行业必须要支持的。来源:VentureBeatGenerative AI on Agenda for Next CIECA Webin…

什么网站做的比较好国家企业信息年度申报系统

内置函数 all()1、描述:all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 True,否则返回 False。元素除了是 0、空、None、False外都算 True。等价于函数:def all(iterable):for element in iterable:if not element:retur…

读人形机器人25伦理问题

读人形机器人25伦理问题1. 数据安全与隐私保护 1.1. 机器人融入日常生活引发了诸多伦理问题,社会必须予以关注 1.2. 在机器人日益融入家庭和工作场所的时代,保护个人信息至关重要 1.3. 数据安全和隐私是人机交互中至…

使用场景规则匹配模式代替复杂的if else条件判断

缘起 在业务处理程序中, 经常需要按照不同的场景有不同的处理方式, 在代码库中也充斥着大量的复杂的 if/else 语句, 这类代码可维护性非常差, 底层原因有:每个场景缺少定义, 将场景识别和场景的应对代码耦合在一…

9.28作业

结果: false false true SMALL MEDIUM 原因:枚举是特殊的类,他的每一个枚举值都是类的实例,LARGE两者指向不同内存地址,因此结果为 false 。isPrimitive() 用于判断是否为原始类型,因此结果为 false 。 结论:…

网站举报能不能查到举报人网站建设合同 模板

环境:win7python2.7 一直想学习多进程或多线程,但之前只是单纯看一点基础知识还有简单的介绍,无法理解怎么去应用,直到前段时间看了github的一个爬虫项目涉及到多进程,多线程相关内容,一边看一边百度相关知识点,现在把一些相关知识点和一些应用写下来做个记录. 首先说下什么是进…

广东网站建设英铭科技开一个小程序要多少钱

1.使用YUM查找软件包 $ yum search python 2.列出所有可安装的软件包 $ yum list | grep python 3.列出所有可更新的软件包 $ yum list updates 4.列出所有已安装的软件包 $ yum list installed | grep python

哪个网站可以搭建网页网站建设合同 技术合同

城市的街道因为汽车数量的增长越来越繁忙,对于驾车一族而言,在热门区域寻找停车场更是无比头痛的事情。然而与此同时,其实也许很多办公楼、住宅楼、酒店和公共车库中仍有许多付费停车的资源未被充分利用。 ParkBee就是这样一家为城市提供智能…