一、数据结构的介绍
数据结构的定义:计算机存储组织数据的方式指相互之间存在一种或多种特定关系的数据元素的集合。
算法的定义:定义良好的计算过程取一个或一组的值为输入并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来讲输入数据转化成输出结果。
二、时间复杂度的计算
一个算法所使用的时间在理论上是不能算出来的,要去在编译器上面跑起来才知道这个程序所需要的时间是多少,但是我们不能每每碰到计算时间复杂度的时候都去在电脑上面跑一遍,但是我们的可以用一个算法所花费的时间与其中语句所执行的次数成正比。算法中的基本操作的执行次数(复杂度通常用F(N)来表示),为算法的时间复杂度。
时间复杂度定义:在计算机科学之中,时间复杂度是一个函数,这个函数描述了该算法的运行时间。
三、举例
void Func(int sz)
{
int count = 0;
for (int i = 0; i < sz; i++)
{
for (int j = 0; j < sz; j++)
{
count++;
}
}
for (int a = 0; a < sz; a++)
{
int b = 0;
b++;
}
}
例子中的次数F(N)=N*N+N,但是我们在计算复杂度时我们其实并不需要去计算精确的执行次数,只是需要一个大概就行了,接下来就介绍大O的渐进表示法。
四、大O的渐进表示法
大O符号:是描述函数渐进行为的数学符号。
使用方法:
1、通常使用数字1来表示运行时间中所有的加法常数。
2、在修改后的运行次数函数中只保留最高项。
3、除去最高项的相乘常数,得到的就是大O阶。
五、使用注意
另外有些算法的时间复杂度存在最好、平均、最坏的情况。
在平常的使用中我们执行程序时通常都要考虑最坏的情况,偶尔几次最好的平均的(不可能次次都是这样的情况),但是为了保证基本的使用还是是要考虑最坏的情况。