首页 > 编程语言 >数据结构(算法)【7月6日】

数据结构(算法)【7月6日】

时间:2023-07-06 23:11:15浏览次数:39  
标签:输出 复杂度 算法 时间 空间 数据结构 输入

一、算法的基本概念:

1、算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。

2、算法的特性:

(1)有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成;【算法是有穷的,程序是无穷的】

(2)确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出;

(3)可行性:算法中描述的操作都可以通过已经实现的基本运算执行次数有限次来实现;

(4)输入:一个算法有0个或多个输入,这些输入取决于某个特定的对象的集合;

(5)输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

3、“好”算法的特质:

(1)正确性:算法应能正确地解决求解问题;

(2)可读性:算法应有良好的可读性,以帮助人们理解;

(3)健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果;

(4)高效率与低存储量需求:花的时间少,不费内存【时间复杂度低,空间复杂度低】

 

二、时间复杂度

1、定义:事前预估算法时间开销  T(n)  与问题规模 n 的关系;

2、加法规则:多项相加,只保留最高阶的项,且系数变为1;

3、乘法规则:多项相乘,都保留;

4、常见的渐近时间复杂度:(常对幂指阶)

O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

5、三种复杂度:最坏时间复杂度、平均时间复杂度和最好时间复杂度。

6、如何计算:

(1)找到一个基本操作(最深层循环)

(2)分析该基本操作的执行次数 x 与问题规模 n 的关系 x = f(n);

(3)x 的数量级O(x)就是该算法的时间复杂度 T(n);

 

三、空间复杂度

1、定义:预估算法内存开销 S(n)  与问题规模 n 的关系;

2、算法原地工作是指算法所需的辅助空间为常量,即O(1);

3、普通程序:

(1)找到所占空间大小与问题规模相关的变量;

(2)分析所占空间 x 与问题规模 n 的关系 x = f(n);

(3)x 的数量级O(x)就是算法空间复杂度 S(n)。

4、递归程序:

(1)找到递归调用的深度 x 与问题规模 n 的关系 x = f(n);

(2)x 的数量级O(x)就是算法空间复杂度 S(n)

  注:有的算法各层函数所需存储空间不同,分析方法略有区别。

 

 

 

标签:输出,复杂度,算法,时间,空间,数据结构,输入
From: https://www.cnblogs.com/danshari/p/17533564.html

相关文章

  • SRGAN图像超分重建算法Python实现(含数据集代码)
    摘要:本文介绍深度学习的SRGAN图像超分重建算法,使用Python以及Pytorch框架实现,包含完整训练、测试代码,以及训练数据集文件。博文介绍图像超分算法的原理,包括生成对抗网络和SRGAN模型原理和实现的代码,同时结合具体内容进行解释说明,完整代码资源文件请转至文末的下载链接。完整......
  • 数据结构与算法1-2
    王争,西安交通大学计算机专业本科毕业时候编程水平其实是很差的。读研究生看《算法导论》。从此我对算法的“迷恋”便一发不可收拾。之后,我如把图书馆里几乎所有数据结构和算法书籍都读了一遍。我边读边练。没多久我就发现,写代码时会不由自主考虑很多性能方面的问题。我写出时间......
  • springcloud - ribbon简单提点 + 手写轮询算法
    ribbon(依然有人使用,还是很难替换掉)负载均衡+restTemplate实现rpc远程调用新版eureka依赖集成好了ribbon,可以不用重新导入consumer远程调用provider使用到了一个resttemplate类在消费者端的consumer中调用   @Resource   privateRestTemplaterestTemplate;/......
  • 数据结构--图的遍历
    图的遍历遍历的定义遍历实质:找每个顶点的邻接点的过程.图的特点图可能存在回路所以我们需要设置辅助数组来标记访问过的节点,防止多次访问.遍历方法深度优先搜索(DFS)方法:深度优先遍历可能有很多种方式连通图的深度优先遍历类似于树的先根遍历.邻接矩阵的深度优......
  • 国内外知名算法网站
     1. 国内算法网站对比网站名称国内/国外内容介绍题目难度题目数量题目类型竞赛活动解题思路编程工具LeetCode中国国内算法题库和面试题库,适合准备面试和提高算法能力合理分布,从Easy到Hard都有2000+算法和数据结构,涵盖多个领域和技术有,包括每周一次的周赛和不定期......
  • 【置顶】算法笔记目录
    1.图论dijkstra算法笔记2.树:树状数组算法笔记线段树算法笔记......
  • vue3 虚拟dom与diff算法
    diff算法vue3diff算法原码地址:  https://github.com/vuejs/core1.diff算法主要是说renderer.ts中patchChildren这段代码逻辑,如下:  2.diff算法排序分为无key时diff算法排序逻辑和有key时diff算法排序逻辑2.1无key时diff算法排序逻辑,分为三步如下,如图1中无key......
  • 数据结构(基本概念)【7月6日】
    前提:408考研只能用C/C++答题,学习数据结构先了解以下内容:1、什么是分支、循环?(如if/else、for、while)2、什么是数组?3、什么是函数?4、什么是指针、地址?5、什么是struct结构体?---------------------------------------------------------分割线-------------------------------......
  • 自适应辛普森法积分算法
    引子有时候我们需要计算一个函数的定积分,粗略上可以使用估算的方法。如图所示,将原本的曲线粗略地看成一个梯形。这个方法叫梯形法制(TrapezoidalRule)。也叫做一阶牛顿-柯特斯闭型积分公式。其中所谓一阶,指的就是n=1的情况。最理想的情况就是把这个图像分割成无数个梯形......
  • C/C++数据结构与算法课程设计[2023-07-03]
    C/C++数据结构与算法课程设计[2023-07-03]数据结构与算法课程设计一、课程设计的目的、要求和任务 本课程设计是为了配合《数据结构与算法》课程的开设,通过设计完整的程序,使学生掌握数据结构的应用、算法的编写等基本方法。1.课程的目的(1)使学生进一步理解和掌握课堂上所学......