【数据结构与算法】算法(Algorithm)的基本概念与特性
什么是程序
算法+数据结构=程序 —— Nicklaus Wirth(尼古拉斯·沃斯)
Niklaus Wirth是一位著名的计算机科学家,他提出了"程序=算法+数据结构"的观点。他认为,程序不仅仅是执行特定任务的一段代码,而是由算法和数据结构两部分组成的。算法定义了程序如何操作数据以达到预期的结果,而数据结构则定义了程序如何存储和组织数据。
什么是算法
算法是解决特定问题的一系列明确的计算步骤。它是一组明确的规则,用于产生一个过程,这个过程在给定一定的输入后,能在有限的时间内得出结果。在计算机科学中,算法是用来操作数据、进行计算、自动推理和解决问题的方法。
常见的算法类型包括排序算法(如快速排序、归并排序等)、查找算法(如二分查找、哈希查找等)、图算法(如深度优先搜索、广度优先搜索、Dijkstra算法等)等。
算法的特性
- 有穷性:算法在执行有限步骤后,必须能够结束。
- 确定性:算法的每一步都有明确的含义,不会有二义性。
- 可行性:算法是能够被执行的,即每一步都是可以实现的。
- 输入:一个算法有0个或多个输入。
- 输出:一个算法有1个或多个输出。
好算法的标准
- 正确性:算法应能正确解决问题,对于合法输入能产生满足要求的输出。
- 效率:算法应尽可能地减少计算资源的使用,包括时间和空间。
- 简洁:算法应尽可能简单,易于理解和实现。
- 健壮性:算法应对输入数据的不同情况都能正确处理,包括一些异常情况。
算法的效率评估
算法的效率通常通过时间复杂性和空间复杂性来评估。时间复杂性是指执行算法所需要的计算工作量,空间复杂性是指执行该算法所需要的存储空间。理想的算法通常是在满足问题要求的前提下,尽可能地减少所需的计算时间和存储空间。