初识数据结构与算法

1.1什么是数据结构与算法

        著名的瑞士科学家Niklaus Writh教授提出:数据结构+算法=程序。数据结构是程序的骨架,算法是程序的灵魂。

1.2数据结构

        数据结构就是带有数据特性的数据元素的集合,用来研究数据的逻辑结构和物理结构以及它们直接的相互关系。

1.3算法

        先举个例子从1到100求和你首先会想到怎么算呢?for循环?

#include<stdio.h>
int main()
{
	int sum = 0;
	for (int i = 1 ; i <= 100; i++)
	{
		sum += i;
	}
	printf("%d", sum);
	return 0;
}

是不是你首先会想到用for的循环?

从1到100我们很明显看的出来这就是高斯的求和公式,我们不妨可以考虑用这种方法

#include<stdio.h>
int main01()
{
	printf("%d", (1 + 100) * 100 / 2);
	return 0;
}

这种方法你是不是没有想到,这种方法比上面的那种循环100次要节省空间和时间。

算法的最终目的就是让你的程序如何最优解,更节省空间和时间。写程序的方法有很多中,但要效率最高的,这就是学算法的目的。

1.4时间复杂度与空间复杂度

         1. 时间复杂度
        
时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运
行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机
器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻
烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比
例, 算法中的基本操作的执行次数,为算法的时间复杂度。
         2.空间复杂度
空间复杂度是对一个算法在运行过程中 临时占用存储空间大小的量度 。空间复杂度不是程序占用
了多少 bytes 的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计
算规则基本跟实践复杂度类似,也使用 O 渐进表示法
        3. O 渐进表示法
O 符号( Big O notation ):是用于描述函数渐进行为的数学符号
 刚刚第一题的时间复杂度是O(n),因为这里n是项数,第二题的时间复杂度是O(1)因为只需要计算一次。(更准确的说它是常数),看的出来n越大与后面的常数无关。这可以和数学高数的极限和抓大头一起理解。主要抓的是重点。
        所以说算法的尽头是数学。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值