2.谈谈算法

算法是什么?
百度百科知乎C语言中文网 … 到处都有对算法的定义。总结来看,算法就是告诉你如何去解决一个问题,在计算机中表现为指令的有限序列。比如,上班族每天怎么上班?开车,坐地铁,挤公交… 都能解决,而每一种方式都是解决上班问题的算法。

算法和程序一样吗?
程序和算法是完全不同的概念。算法是解决某个问题的想法、思路;而程序是在根据算法编写出来的真正可以运行的代码。例如,要依次输出一维数组中的数据元素的值,首先想到的是使用循环结构,在这个算法的基础上,我们才开始编写程序。

算法有什么特点?
1.有穷性:算法在有限的步骤之后会自动结束而不会无限循环,别人走了,还没算完。
2.确定性:相同的输入必须得到相同的输出。
3.可行性:算法的每一步都是可行的。
4.输入:算法应该有零个或多个输入。
5.输出:算法应该有一个或多个输出,没有输出那还有什么意义。

算法设计有什么要求?
1.正确性:算法应该能够正确的解决所面临的问题。
2.可读性:算法要方便阅读,理解和交流。简言之,它是给人看的,别让人看不懂。
3.健壮性:面对不合理的输入,算法不应该产生莫名其妙的结果。
4.高性价比:利用最少的时间和资源得到满足要求的结果。

算法效率的评估
1.时间复杂度:算法在计算机内执行所需运行时间的度量。
2.空间复杂度:算法在计算机内执行所需存储空间的度量。

生活中的算法

  • 计算 1+2+3+4 … +100000 =?怎么办?下面有两个算法。在这里插入图片描述 - 哪种算法好?两者都试试,先看算法一,直接用 C语言 解决
#include<stdio.h>

int main() {

	//算法一:先算1+2=3,然后算3+3=6,然后继续...
	int sum_1=0;
	for (int i = 1; i <= 100000; i++) {
		sum_1 = sum_1 + i;
		printf("%d\n", sum_1);
	}
		
}

  • 经过 8.67s 的等待,结果出来了。在这里插入图片描述

  • 再看算法二,还用 C语言 解决

#include<stdio.h>

int main() {

	//算法二:等差数列求和公式:Sn=n (a1+an)/2 
	int sum_2 = 100000 * (1 + 100000) / 2;
	printf("%d\n",sum_2);

}

  • 经过 0.1s 的等待,结果出来了。在这里插入图片描述
  • 结果都一样,但是在效率上明显算法二优于算法一。 其实生活中还有很多涉及到算法的例子。比如,你在淘宝上搜索你想要的东西,它是如何在上百亿件产品中又快又准地找到,这就离不开优秀的算法。

练习题

  1. 计算机算法指的是(C)
    A.计算方法                                 B.排序方法
    C.解决问题的有限运算序列        D.调度方法

  2. 一个算法应该是(B)
    A.程序                                     B.问题求解步骤的描述
    C.要求满足5个基本特征          D.A和C

  3. 设计一个 “好” 的算法应考虑(A B C D)
    A.正确性             B.可读性
    C.健壮性             D.效率于低存储量需求

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头疼小宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值