1.2 算法的基本概念和算法评估

本篇内容主要是算法的基本概念和算法评估的方法,话不多说,上正文。

什么是算法?

俗话说得好“程序=数据结构+算法”!那什么是算法呢?算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,是计算机操作指令的集合。数据结构的作用是将数据信息化并实现对数据的基本操作;算法则是使用已经实现的数据操作,处理数据并解决问题的步骤或方案,任何算法都是为了解决问题而存在的。

算法的要素

一个算法需要以下五个要素

  • 输入:一个算法需要0个或多个输入,多个输入很好理解,多个参数嘛,0个输入也很好理解,一个printf操作需要个鬼的输入[doge]
  • 输出:一个或多个输出,算法嘛,最后总要有个计算结果出来,没有结果的佛系算法emmmm出门右转好吧
  • 有穷性:包括两个方面,第一算法的步骤要有穷,一个执行不完的算法,我找谁要结果?第二算法执行的时间要有穷,想一想一个算法跑了两百年没跑完……emmmm算法测试完成日,家祭无忘告乃翁。敲黑板,虽然算法要有穷,但是程序可以是无穷的,比如服务器程序又或者一些while(true)
  • 确定性:算法的每一条指令的含义必须清晰,不存在二义性。同样是一句话“这周日你有空吗?”理解错了你就凉了好吧
  • 可行性:算法中所有的操作都可以通过已经实现的基本运算执行有限次完成。搞一个现在还没办法实现的算法出来,概念算法嘛?算法是解决实际问题的。

好的算法的特质

  • 正确性:算法要能正确的解决问题
  • 可读性:算法要有良好的可读性,帮助人的理解,重要的是无歧义的描述算法的步骤
  • 健壮性:出现非法的数据输入时,算法能适当的反应和处理,不会有奇奇怪怪的输出
  • 高效率和低存储量需求:执行速度快,时间复杂度低;不占用过多内存,空间复杂度低,执行时间长了用户受不了,存储占用高了成本受不了

谈下一话题,算法的评估。

算法的评估

算法的评估主要两个方面,时间复杂度和空间复杂度。
时间复杂度
计算时间复杂度是一个实践性的东西,详细的计算方法网上太多了,我就不再写一遍了,直接给总结的内容在这里插入图片描述

  • 时间复杂度就是讨论指令执行次数与问题规模n之间的关系
  • 如果计算所得只有常数项则时间复杂度为O(1)
  • 如果存在n或n的高阶项,则舍弃常数项
  • 在n的相关项中只保留最高阶项
  • 将最高阶项的系数化为1

关于时间复杂度的大小比较(上图标红部分)
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
总是分不清几个复杂度关系,提供两种办法
数学证明
在这里插入图片描述
log2n为n的高阶无穷小,也就是说,当n→∞,n的增长速度比log2n更快。

画图
在这里插入图片描述
空间复杂度
空间复杂度的计算方式与时间复杂度类似 上图
在这里插入图片描述

  • 依据上图而言,对于普通程序,只需要关注程序执行中的变量所占用的空间和问题规模n之间的关系
    • 当变量所占空间固定,与问题规模无关时,变量所占空间会改变表达式中的常数项,只有变量空间与而当问题规模n相关时(如声明一个长度为n的数组)才纳入空间复杂度的考虑范围,比如一维数组空间复杂度为n,二维数组空间复杂度为n2
  • 当计算递归程序的空间复杂度时,结合空间占用和问题规模n之间的关系,考虑递归调用的次数即可

本篇完

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构1800题1. 算法的计算量的大小称为计算的( )。【北京邮电大学2000 二、3 (20/8分)】 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于( )【中科院计算所 1998 二、1 (2分)】 A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2) 这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 【南京理工大学 1999 一、1(2分) 【武汉交通科技大学 1996 一、1( 4分)】 4.一个算法应该是( )。【中山大学 1998 二、1(2分)】 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5. 下面关于算法说法错误的是( )【南京理工大学 2000 一、1(1.5分)】 A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是( )【南京理工大学 2000 一、2 (1.5分)】 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为( )两大类。【武汉交通科技大学 1996 一 、4(2分)】 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值