《计算机导论》知识点整理4-算法的基本特征和算法的分析标准

 

一、什么是算法?

算法,就是计算机对解题方案完整又准确的描述。通俗的说就是解决某项问题所采取的方法和步骤。

 

算法主要分成两大类:数值算法、非数值算法。

 

1)数值算法:目的是求数值的解,特点就是少量的输入和输出、大量复杂的运算。

 

2)非数值算法:目的是对数据进行处理,特就是大量的输入和输出、简单的运算,应用面十分广泛。

 

二、算法的基本特征

1、能行性

2、确定性

3、有穷性

4、可以没有输入或者多个输入但是至少有一个输出

 

理解:算法是对计算机的解决问题方案的描述,那每一步都应该是可以执行并且是确定、没有歧义的,使用者可以不通过输入设备进行输入但是通过算法,计算机一定要有一个输出的结果,这也要求了算法步骤必须有限,否则计算机将会一直按照算法的步骤一直算下去,就一直没有结果输出。

 

三、算法的表示

这里主要介绍几种类型的描述算法的工具:自然语言、流程图、伪代码、程序设计语言

 

1)自然语言:就是人们常用的语言描述,这是通俗易懂的。

 

2)流程图:就是用图画的形式,随着时代的发展流程图的呈现也在不断地进步,细分下来有:传统流程图、N-S流程图(盒图)、PAD图

 

传统的流程图,就是用箭头和图形组合的形式展现

5decbf8aa46745c489d44072a670456e.jpg

 

 

 

盒图,也就是N-S流程图,它是在传统的流程图的基础上演化而来,主要体现在课可以嵌套使用并且省掉的箭头

PAD图,是一种以二维树形结构图的方式对结构化程序进行描述,因此由PAD图设计出来的程序也必然是结构化程序,通过软件工具可以将这样的PAD图翻译成程序代码。见下表:

ca37b03ad8e24d6f8c6567665e0e26a8.jpg


上部分是盒图,下部分是PAD图

 

 

3)伪代码(PDL):“伪”就代表假,它是使用介于自然语言和计算机语言的文字和符号来描述算法。它本质上时不能直接被计算机理解执行的,需要借助高级语言的控制结构和自然语言来描述,运用缩进格式来表示控制结构的嵌套,比如像:procedure、begin、end、loop、if、then等等。特点就是少量的语法规则和大量的自然语言描述,使用起来比较灵活。

 

4)程序设计语言:就是我们常说的C语言、Python,java等等编程语言。

 

四、算法的分析角度

主要就是几个方面:正确性、简单性、时间复杂度、空间复杂度

 

1)2)正确性和简单性就是算法(解决方案的描述)对于解决这个问题而言是不是正确的,是不是足够简单。也就是解决这个问题,你的解决方案是否正确和解决方式是否足够简单。

 

3)时间复杂度:就是算法在机器上执行运算花费的时间。主要分成了“事前分析估算”和”事后统计“。

 

”事后统计“就是字面意思,在执行完算法之后,统计运算需要的时间,但是这需要执行完程序之后并且受到硬件设备的影响,这样的统计往往会难以判断执行运算时计算机需要的时间。

 

”事前分析估算“,就是在执行算法之前的时间估算,主要基于以下几个因素:高级语言的种类(越是高级的语言,执行效率越低)、采用的算法策略、编译器的质量、问题的规模等等

 

显然,一个算法在不同语言的描述、用不同编译器编译、不同计算机上执行所耗费的时间都不一样。

 

算法=控制结构(顺序、分支、循环)+原操作(固有的数据类型的操作),算法时间就取决于两者的综合效果。

 

抛开计算机软硬件的影响,用问题的规模来决定一个算法的”工作量“,用n来表示问题规模的函数

 

时间复杂度的呈现等级有以下几个,见下表:

2a18f398889f44189a8110736072169d.jpg


随着n的不断增加,时间复杂度也不断增加,算法的执行效率就越低。

 

 

4)空间复杂度:就是一个算法在运行过程中临时占用的存储空间的大小。借用书上的描述一用:

bd0c609bb777468db42934a408698299.jpg

 

 


最后,作为笔记,肯定有很多的不足之处,希望大家多多包涵,有什么不准确的地方也希望能收到指正,阿白会更改哒!

 

 知识点整理4-算法的基本特征和分析标准

 

  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CSDN是一个技术社区平台,提供了大量的计算机算法设计与分析知识点。这些知识点主要涵盖了算法设计与分析基本概念、算法复杂度分析、常用算法设计技巧、数据结构、动态规划算法等。 在算法设计与分析基本概念方面,CSDN提供了对算法的定义、特征以及常见的算法分类方法的介绍。这对初学者来说是非常有帮助的,可以帮助他们对算法有一个初步的了解。 在算法复杂度分析方面,CSDN提供了对时间复杂度和空间复杂度的解释,以及如何通过渐进记号表示算法的复杂度等内容。这些知识点对于分析算法的效率和性能是非常重要的,能够帮助开发者选择合适的算法来解决问题。 在常用算法设计技巧方面,CSDN介绍了常见的算法设计思想,如贪心算法、分治算法、动态规划算法、回溯算法等。这些技巧在实际问题解决中非常实用,能够帮助开发者设计出高效的算法。 在数据结构方面,CSDN提供了对常见数据结构的介绍,如数组、链表、树、图等。这些数据结构在算法设计与分析中起着重要的作用,了解它们的特点和应用场景能够帮助开发者更好地选择和设计算法。 在动态规划算法方面,CSDN提供了对动态规划算法的详细解释和例子。动态规划是一种解决复杂问题的有效算法思想,通过将问题划分为子问题并保存子问题的解,可以大大提高算法的效率和性能。 总的来说,CSDN提供了丰富的计算机算法设计与分析知识点,涵盖了算法基本概念、算法复杂度分析、常用算法设计技巧、数据结构、动态规划算法等等。这些知识点对于提高开发者的算法设计与分析能力非常有帮助。 ### 回答2: CSND计算机算法设计与分析主要包括以下几个知识点。 1. 算法基础:了解基本算法概念,包括时间复杂度、空间复杂度、递归等。掌握算法的常见特性,如贪心算法、动态规划、回溯等。 2. 数据结构:熟悉常见的数据结构,如数组、链表、栈、队列、树、图等,并了解它们的特点、操作和适用场景。还需要了解常见的高级数据结构,如平衡树、哈希表、堆等。 3. 排序和搜索算法:了解常见的排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序等,并掌握它们的原理和实现方法。掌握二分查找等常见的搜索算法。 4. 图算法:熟悉图的基本概念,如顶点、边、路径、连通性等。掌握常见的图算法,如广度优先搜索、深度优先搜索、最短路径算法、最小生成树算法等。 5. 动态规划:了解动态规划的基本思想和应用场景。学习如何使用动态规划解决问题,如背包问题、最长公共子序列等。 6. 算法分析:学会分析算法的时间复杂度和空间复杂度,并了解如何选择合适的算法来解决问题。了解常见的算法优化技巧,如剪枝、记忆化搜索等。 通过学习CSND计算机算法设计与分析知识点,可以帮助我们更好地理解算法的原理和实现方法,提高编程的效率和质量。掌握这些知识,我们可以更加高效地解决各种计算机问题,并在实际应用中得到更好的结果。 ### 回答3: CSDN(China Software Development Network)计算机算法设计与分析是一个涉及计算机科学中算法设计与分析技术的知识点。算法计算机科学的基础,通过它可以解决各种问题。算法设计与分析旨在介绍算法的设计方法和性能分析技术。 在CSDN的计算机算法设计与分析中,首先会介绍常见的算法设计方法,如贪心算法、动态规划、分治算法等。贪心算法是一种每一步都选择当前最优解的算法,动态规划是将大问题分解为小问题进行解决的算法,而分治算法是将大问题分割成更小的子问题后递归求解。 接下来,CSDN会介绍算法的性能分析技术,包括时间复杂度和空间复杂度。时间复杂度是衡量算法运行时间的指标,表示算法执行所需的时间与问题规模之间的关系。空间复杂度则是衡量算法所需的内存空间大小与问题规模之间的关系。 除了基础的算法设计与分析知识点,CSDN还会介绍一些常见的算法应用,如图算法、字符串处理算法、排序算法等。这些算法应用在图像处理、自然语言处理、数据库管理等领域都有广泛的应用。 同时,CSDN还会分享一些算法的优化技巧和算法实现的代码示例。通过学习这些知识点,读者可以提高自己的算法设计与分析能力,进一步提升解决问题的效率和准确性。 总之,CSDN的计算机算法设计与分析知识点涵盖了算法设计方法、性能分析技术、算法应用以及代码实现等内容。通过学习这些知识点,读者可以全面了解和掌握算法设计与分析的基础知识,提升自己在计算机科学领域的能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值