数据结构 1

1.什么是数据结构

数据结构(Data Structure)是计算机存储和组织数据的方式,是指相互之间存在的一种或多种特定关系的数据元的集合。

2.什么是算法

算法(Algorithm)就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

3.数据结构和算法的书籍资料

学习完数据结构知识,可以去看《剑指offer》和《程序员代码面试指南》。

4.算法的效率

衡量一个算法的好坏,要从它的程序的时间复杂度和空间复杂度两方面来分析。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间

5.时间复杂度

算法的时间复杂度是一个函数,算法中的基本操作的执行次数,为算法的时间复杂度。找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。

void Func1 ( int N )
{
int count = 0 ;
for ( int i = 0 ; i < N ; ++ i )
{
for ( int j = 0 ; j < N ; ++ j )
{
++ count ;
}
}
for ( int k = 0 ; k < 2 * N ; ++ k )
{
++ count ;
}
int M = 10 ;
while ( M -- )
{
++ count ;
}
printf ( "%d\n" , count );
}
Func1 执行的基本操作次数 : F(N)=N`2+2*N+10
O 符号( Big O notation ):是用于描述函数渐进行为的数学符号。
推导大 O 阶方法:
1 、用常数 1 取代运行时间中的所有加法常数。
2 、在修改后的运行次数函数中,只保留最高阶项。
3 、如果最高阶项存在且不是 1 ,则去除与这个项目相乘的常数。得到的结果就是大 O 阶。
通过上面我们会发现大 O 的渐进表示法 去掉了那些对结果影响不大的项 ,简洁明了的表示出了执行次数。O(N~2)
在实际中一般情况关注的是算法的最坏运行情况。

6.空间复杂度

空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度 。
空间复杂度算的是变量的个数,也使用大O渐进表示法。
函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了,因 此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。

7.常见的复杂度对比

数据结构 1_第1张图片

你可能感兴趣的:(数据结构,算法,开发语言,c语言,visualstudio)