2023-04-11
工具
00

介绍

Markdown 是一种轻量级标记语言,它允许你使用易于阅读、易于编写的纯文本格式来创建富文本内容。通过简单的标记符号,如井号(#)、星号(*)和下划线(_),可以快速地添加标题、粗体、斜体、链接等基本样式,从而使得排版和格式化变得非常简单。

引言

在上一篇复杂度分析专题(一)中,学习了复杂度的大O表示法和一些常见复杂度(O(1)O(1)O(n)O(n)O(logn)O(logn)O(n2)O(n^2)等等)的分析方法,下面介绍4个更加细分的复杂度概念:

  • 最好情况时间复杂度(best case time complexity)。
  • 最坏情况时间复杂度(worst case time complexity)。
  • 平均情况时间复杂度(average case time complexity)。
  • 均摊时间复杂度(amortized time complexity)。

意义

算法复杂度分析的意义在于评估算法的执行效率,找出最优解决方案,是优化算法和改进程序性能的基础。通过对算法的时间复杂度和空间复杂度进行分析,可以帮助我们预估该算法运行所需的资源,从而提高程序的性能。

开场白

算法介绍从一个简单加法开始,现要求写一个求1+2+3+..+100的结果的程序,那我可以这样写:

csharp
int count = 100; int sum = 0; for (int i =1; i <= count; i++) { sum += i; }

数据结构起源

早期人们都把计算机理解为数值计算工具,就是感觉计算机当然是用来计算的,所以计算机解决问题,应该是先从具体问题中抽象出一个适当的数据模型,设计出一个解此数据模型的算法,然后再编写程序,得到一个实际的软件。

可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表、树和图等数据结构)的帮助,才能更好地处理问题。所以数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科