一个算法具有五个特征:有穷性,确切性,输入项,输出项,可行性.
时间复杂度和空间复杂度的概念
时间复杂度:执行算法所需要的计算工作量,一般来说,计算机算法是问题规模n的函数f(n),算法的时间复杂度也因此记做T(n)=O(f(n)).
问题的规模n越大,算法执行的时间的增长率与f(n)的增长率正相关,称作渐进时间复杂度。
最坏情况:最坏情况时的运行时间,一种保证,如果没有特别说明,说的时间复杂度即为最坏情况的时间复杂度。
平均情况:期望的运行时间
空间复杂度:算法需要消耗的内存空间,记作S(n)=O(f(n)) 包括程序代码所占用的空间,输入数据所占用的空间和辅助变量所占用的空间这三个方面。
计算和表示方法与时间复杂度类似,一般用复杂度的渐近性来表示。
有时用空间换取时间:冒泡排序的元素交换,空间复杂度O(1)