算法基础

  算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

  算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。简单来说,算法就是一个计算过程,解决问题的方法。

算法的特征

  一个算法应该具有五个重要的特征:

有穷性(Finiteness):算法的有穷性是指算法必须在执行有限的步骤之后终止。

确切性(Definiteness):算法的每一个步骤必须有确切的定义。

输入项(Input):一个算法有0个或多个输入,以刻画运算对象的初始情况,0个输入是指算法本身定出了初始条件。

输出项目(Output):一个算法有1个或多个输出,以反映对输入数据加工后的结果,没有输出的算法是毫无意义的。

可行性(Effectiveness):算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作,每个计算步都可以在有限时间内完成(也称之为有效性)。

算法的评定

  同一问题可以用不同的算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。其一个算法的评价只要从(时间复杂度)和(空间复杂度)来考虑。

时间复杂度:算法的时间复杂度是指执行算法所需要的计算工作量。可以用O(n)来当单位衡量。

空间复杂度:算法的空间复杂度是指算法需要消耗的内存空间。一般用空间换时间。

正确性:算法的正确性是评价一个算法优劣的最重要标准、

可读性:算法的可读性是指一个算法可供人们阅读的容易程度。

健壮性:健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。

Python中的算法排序

算法基础

算法基础

一般来说,时间复杂度高的算法比复杂度低的算法慢。 常见的时间复杂度(按效率排序) O(1)<O(logn)<O(n)<O(nlogn)<O(n**2)<O(n**2logn)<O(n**3) 不常见的空间复杂度 O(n!)n的阶乘 O(2**n)2的n次方 O(n**n)n的n次方 小技巧: 如果是循环减半的过程 -> O(logn) 几次循环就是n的几次方的复杂度 print("Hello World!") # 时间复杂度为O(1) for i in range(n): # 时间复杂度为O(n) print("Hello World!") for i in range(n): # 时间复杂度为O(n**2)n的二次方 for j in range(n): print("Hello World!") for i in range(n): # 时间复杂度为O(n**3)n的三次方 for j in range(n): for k in range(n): print("Hello World!") while n > 1: # 时间复杂度为O(logn)求n的幂的逆运算 print(n) n = n // 2

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfsfg.html