【1906】算法设计与分析学习笔记——基础理论

一、什么是算法?

算法(algorithm)是求解一类问题的任意一种特殊的方法。严格的说法是,一个算法是对特定问题求解步骤的一种描述,它是指令的有限序列。 
算法具有下面五个特征:

  • 输入(input):算法有零个或多个输入量;
  • 输出(output):算法至少产生一个输出量;
  • 确定性(definiteness):算法的每一条指令都有确切的定义,没有二义性,无歧义;
  • 有限性(finiteness)算法的每条指令的执行次数是有限的,执行每条指令的时间也是有限的;

概括地说,算法是由一系列明确定义的基本指令序列所描述的,求解特定问题的过程。它能够对合法的输入,在有限时间内产生所要求的输出。 
如果取消有穷性限制,则只能称为计算过程(computational procedure);

对比程序:(典型的操作系统则是一个无限循环执行的程序)

  • 程序是算法用某种程序设计语言的具体实现
  • 程序可以不满足算法的性质-有限性

二、算法的复杂性

计算机程序的性能和所用资源的理论分析——

  • 算法复杂性= 算法所需要的计算机资源
  • 算法的时间复杂性T(n)
  • 算法的空间复杂性S(n)

运行时间依赖于输入(输入驱动算法执行)——

  • 一个已经排好序的序列更容易排序
  • 通常情况下,较短的序列更容易排序,因此,我们用输入的大小来参数化运行时间
  • 通常,我们想要获取的是运行时间的上界
  • 实际上每个人都更倾向于获得一种保证

时间复杂度(一般最常用的指标)——

相关的符号表示——

 

对应的典型的关系和性质——

以及性质的典型证明——

 

 三、典型运算

四、C++实现的数组内存分配

 

 

 

posted on 2019-06-11 22:39  HongQI鸿  阅读(291)  评论(0编辑  收藏  举报

导航