`
zhangyu8374
  • 浏览: 94608 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基本算法连载(3)-3个基本性质

阅读更多
  • 性质1:一颗二叉树(严格的二叉树,即没有度为1的节点),有N个内部节点,那么它将有N+1个外部节点。
采用归纳法证明:
  1. 如果只有一个外部节点,即单独的一个根节点,那么内部节点数为0,结论显然成立。
  2. 假设有N-1个内部节点时,结论成立。那么二叉树拥有N个内部节点时,左子树有k个内部节点,右子树有N-k-1个内部节点,此外包括一个根节点。由于左 右子树的节点数都小于N,所以由前面假设可得左子树有k+1个外部节点,右子树有N-k个节点,总共有k+1+(N-k)个节点,即N+1个节点。
  3. 由性质1可得,一颗有N个外部节点的二叉树需要用数组存储,那么需要申请一个拥有2N-1个元素的数组。
  • 性质2:在一个已排序的序列中寻找和为给定数值的两个数,可在O(n)时间内完成。
简单示例:
#include <stdio.h>
int main(int argc,char*argv[]){
//排好序的数组序列
int a[10] = {1,2,3,4,5,6,7,8,9,10};
//给定值
int value = 21;
int i = 0,j = 9;
while(1){
if(a[i] + a[j] == value){
break;
}else{
if(i >= j){
printf("%s\n","Not found!");
exit(1);
}
}
if(a[i] + a[j]<value){
i++;
}else{
j--;
}
}
printf("%d\n%d",i,j);
return 0;
}

  • 性质3:在一个无序序列中寻找和为给定数值的两个数,可在O(nlgn)时间内完成。
  1. 采用快速排序对无序序列进行排序,时间复杂度为O(nlgn)。
  2. 由性质2可知,时间复杂度为O(n)。
分享到:
评论

相关推荐

    粒子群算法优化3-5-3多项式工业机器人时间最优轨迹规划算法matlab代码

    总结起来,"粒子群优化3-5-3时间最优"是一个将群体智能算法应用于工业机器人轨迹规划的实例。通过MATLAB实现,该算法能够有效地找到3-5-3多项式的参数,以实现时间最优的运动轨迹。对于机器人控制和自动化领域的研究...

    算法初步课件 1.2.2 基本算法语句--条件语句.ppt

    算法初步课件 1.2.2 基本算法语句--条件语句.ppt

    wK算法算法处理RADARSAT-1数据_share

    “wK算法算法处理RADARSAT-1数据_share”表明这是一个关于使用wK算法对RADARSAT-1卫星遥感数据进行处理的技术分享。wK算法可能是某种特定的数据处理或图像增强算法,而RADARSAT-1是加拿大的一颗合成孔径雷达(SAR)...

    一个介绍遗传算法的PPT-基本遗传算法.ppt

    一个介绍遗传算法的PPT-基本遗传算法.ppt 附件是一个介绍遗传算法的ppt,我觉得还是很不错的,希望对大家特别是那些初学遗传算法的朋友有一定帮助。 基本遗传算法.ppt === ...

    算法导论 - Thomas

    - **6.2 维护堆属性**:描述了如何保持堆的数据结构满足其基本性质。 通过上述总结可以看出,《算法导论》(第三版)是一本全面介绍了算法理论与实践的教材,涵盖了算法的基础知识、设计技巧、分析方法以及具体的...

    Bresenham画线算法、Cohen-SutherLand裁剪算法、de Casteljaus算法绘制贝赛尔曲线、扫描线填充算法、椭圆的扫描转换算法之C#实现

    在这个主题中,我们将深入探讨五种核心算法的C#实现:Bresenham画线算法、Cohen-Sutherland裁剪算法、de Casteljaus算法绘制贝塞尔曲线、扫描线填充算法以及椭圆的扫描转换算法。 首先,Bresenham画线算法是计算机...

    数据结构,算法与应用 ---C++语言描述(代码与习题答案)

    3. **C++实现**:C++支持面向对象编程,通过类和对象可以更好地封装数据和行为,实现数据结构和算法。模板机制允许创建泛型代码,增强了代码的复用性。此外,C++标准库提供了丰富的容器(如vector、list、set、map)...

    PSO-粒子群优化算法源程序--MATLAB编写

    粒子群优化算法源程序--MATLAB编写

    NSGA-III算法-matlab版本-写满了中文注释

    这是从mathwork上下载的NSGA-3的代码,自己写的注释。因为也没有完全弄懂代码,所以有些地方空着没写注释,有些地方还注释了问号。就是希望能和大家一起讨论交流一下,希望大家指正。希望弄懂代码的小伙伴能回帖说...

    SHA-3 加密算法C语言测试代码-(基于Keccak算法)

    2012年10月,美国NIST选择了Keccak算法作为SHA - 3的标准算法,Keccak拥有良好的加密性能以及抗解密能力。 测试说明 测试代码由makefile进行管理 将整个文件夹拷贝到Linux目录下,使用gcc编译 编译运行步骤: 1、在...

    UWB常用测距算法(CHAN、CHAN-Taylor等)

    该算法的基本思想是通过测量信号从一个发射器到多个接收器的时间差来计算目标的距离。其主要步骤如下: 1. **信号同步**:首先,接收端需与发射端进行时钟同步,确保时间基准一致。 2. **TDOA估计**:记录下信号...

    算法导论(正宗中文第三版)3-1

    3. 流网络和矩阵运算:作者对这两个部分进行了更新,使之更适应当前算法研究的趋势和实践需要。 三、移除内容 1. 二项堆和排序网络:二项堆是一种可以高效实现多种堆操作的数据结构。排序网络是一种特殊的并行算法...

    经典教材-算法导论-英语版

    每一章都围绕一个算法、一种设计技术、一个应用领域或相关主题展开。算法被用英文和伪代码形式描述,这种伪代码旨在让任何具备基本编程经验的人都能理解。此外,书中包含超过230幅插图,帮助读者更好地理解算法的...

    空间谱估计理论与算法------程序.rar

    第3章_线性预测算法;第4章_多重信号分类算法;第5章_最大似然及子空间拟合算法;第6章_旋转不变子空间算法;第7章_子空间迭代与更新;第8章_宽带信号的空间谱估计算法;第10章 空间分布式信号源参数估计;第11章_...

    数据结构与算法分析--C语言描述_数据结构与算法_

    本资源"数据结构与算法分析--C语言描述"是针对数据结构初学者的一个优秀教材,旨在帮助读者快速掌握这一领域。 首先,数据结构是组织和存储数据的方式,它决定了数据的访问效率和处理速度。常见的数据结构包括数组...

    基本数据结构实现整理_+排序+一些面试算法_Data-Structures-and-Algorithms.zip

    基本数据结构实现整理_+排序+一些面试算法_Data-Structures-and-Algorithms

    ECC算法校验工具---ECC开发

    ECC算法校验工具ECC算法校验工具ECC算法校验工具

    算法技术手册 - 中文版

     · 快速找到与您所解决的问题相关的算法,并决定哪个算法才是最适合的那一个  · 探索使用C、C++、Java以及Ruby实现的算法解决方案以及开发小贴士  · 了解算法预期的性能,以及它达到最高性能时所需要的条件  ...

    算法导论答案 经典

    - **16.1-3**:理解贪心算法的贪心选择性质。 - **16.1-4**:研究贪心算法的时间复杂度。 - **16.1-5**:探讨贪心算法的应用场景。 #### 16.2 贪心证明 - **16.2-1**:学习如何证明贪心算法的正确性。 - **16.2-2*...

    论文研究-一种改进的遗传算法:GA-EO算法.pdf

    针对基本遗传算法GA有局部搜索能力差、计算量大、对较大搜索空间适应能力差和易收敛于局部极小值等问题, 采用将极值优化EO算法与传统遗传算法相结合的方式, 对基本遗传算法进行改进, 提出了一种新的算法:GA-EO算法,...

Global site tag (gtag.js) - Google Analytics