数据结构与算法(一)——绪论、复杂度

程序设计 = 数据结构 + 算法

数据结构

数据结构:逻辑结构(数据对象中数据元素之间相互关系)物理结构(数据的逻辑结构在计算机中的存储形式)

四大逻辑结构:集合结构、线性结构、树形结构、图形结构

物理结构:数据元素的存储结构形式(顺序存储结构和链式存储结构)

链式存储结构:1号元素存储的值是(1号)地址为2号的地址,通过地址找到2号。

算法

算法:解决特定问题求解步骤的描述;也就是你泡妞的技巧和方式(小甲鱼说的)。

一个问题可以由多种算法解决,但是一个算法也不可能解决所有问题(药不可能包治百病)。

算法五个基本特征:输入、输出、有穷性、确定性、可行性。

输入:算法具有零个和多个输入;

输出:至少有一个或多个输出;

有穷性:执行一定步骤后,自动结束而不会无限循环;

确定性:一定条件下,只有一条可执行路径,相同输入只能有唯一输出结果;

可行性:每一步必须可行,都能够通过执行有限次数完成;

算法设计要求:

正确性(先满足前三条就可以)。

1、算法程序没有语法错误;

2、对于合法输入能够产生满足要求的输出;

3、对于非法输入能够产生满足规格的说明;

4、对于故意刁难的测试输入都有满足要求的输出结果;

可读性(便于他人阅读、理解和交流)。

健壮性(输入数据不合法时,算法能做出相关处理,而不是异常和莫名其妙的结果)。

时间效率高和存储量低。

算法初体验:从1加到100的和?

#include <bits/stdc++.h>//万能头文件,博客里有转载如何添加

int main()
{
	//没有算法的情况下,迭代100次
	int i, sum = 0, n = 100;
	for (i = 1; i <= n; i++)
	{
		sum = sum + i;
	}
	printf("无算法结果是%d\n", sum);

	//用 搞死先生的算法,可以这样写,不需要迭代
	int sum_gs = 0, n_gs = 100;
	sum_gs = (1 + n_gs)*n_gs / 2;
	printf("有算法结果是%d", sum_gs);

	system("pause");
}

时间复杂度和空间复杂度

算法效率的度量方法:事后统计方法、事前分析估计方法。

事后统计方法:通过设计好的测试程序和数据,利用计算机计时器对不同算法程序运行时间进行比较。

事前分析估算方法:在计算机程序编写前,依据统计方法对算法进行估算。

程序运行消耗时间取决于下列因素:

1、算法采用的策略,方案;2、编译产生的代码质量;3、问题的输入规模;4、机器执行指令的速度。

时间复杂度

空间复杂度

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值