欢迎宝子
准备好迎接知识的冲击了吗?
让我们一起走进编程的世界(不秃头版),感受知识的海洋吧
我们大概知道一个程序通常包含算法,数据结构,程序设计方法以及语言工具和环境这四个方面,而算法是其中最重要的部分。通过这篇文章,我将带领大家初步认识算法的基本知识。
目录
一.了解算法的特性
二,我们了解了解算法的优劣(很重要哦)
三, 算法的描述
四, 用流程图的方法阐述算法
接下来讲一讲N-S流程图(就当扩展,理解上面的就可以了)
1.1,算法的特性
算法是为了解决某类特定问题而制定的一个实现过程,它具有以下特性
1 有穷性
每个算法都必须执行有穷步后结束,而且每一步都要在有穷步后完成,不能无限执行,没执行一步后都更加接近结束。
2 确定性
算法的每一步都是确定的,不能模糊不清,不能有二义性(不要为难编译器),必须对每一步要执行的动作都有十分严格的规定
3 可行性
算法是用来解决问题的,不能运行不是白写了,当然还要保证运行真确。(一些小小的地方就会出这些问题,我们要考虑全面)
代码演示: 例如以下代码
#include
#define _CRT_SECURE_NO_WARNINGS
int main()
{
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
if(y==0)
z=x/y;
}
上面的就是一无效代码,因为分母根本不能是零
说明:不加第二个头文件一些友友们在vs上运行后发现出现以下报错
错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
这里添加的另一个头文件(#define _CRT_SECURE_NO_WARNINGS)是防止使用scanf函数时报错,用vs他会默认你使用scanf_s,当然这是vs默认的,我们为了更加迎合所有的编译器,添加上边的头文件就解决了以上报错。
4 输入
一个算法应该有零个或多个输入,输入是执行算法时需要从外界取得一些必要的值。
5 输出
一个算法至少要有一个输出,编写一段代码就是想要得到一个结果,如果没有输出,这个程序也就失去了他所存在的意义
如何判断你写的是一个好代码还是乱糟糟的代码呢?
让我们从以下几个方面分析。
1,正确性
这个不用多说吧。
2,可读性
可读性是指该算法能不能十分简单的进行阅读,如果一个算法十分抽象,不宜与交流推广使用,其后续修改扩展维护等都不太方便,那么这个代码的可读性就不高,所以我们在写一个算法时都要尽量将其写的简单易懂一些。
3.健壮性
一个程序完成后,运行该程序的每个用户对这个程序的理解都有不同,写一个好的算法,输入的数据不符合要求时,算法也能及时作出回应,不会因为输入错误而导致瘫痪。
算法包括算法设计和算法分析,算法设计研究针对某一特定类型的问题设计出求解的步骤,算法分析则是讨论设计出的算法的正确性和复杂性。
接下来举几个例子。
1.用自然语言描述
有时候面试官忽然打来电话询问问题,让你用自然语言描述解决一个问题,怎么才能说的清晰透明呢
例如,我们要求N的阶乘
1,首先我们要把输入n变量创建出来,其初始化为1,循环变量i初始化为1,然后再来一个mul(multiplication乘法)储存我们要输出的值
2,键盘上输入一个值,给n赋值
3,循环中将mul*i的结果赋给mul
4,循环变量i++,判断 i 的值是否大于 n ,如果大于,则执行步骤5,如果不大于则返回去执行步骤3
5,输出mul的值
代码演示如下:
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
int i = 0;
int n = 0;
int mul = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
mul = mul * i;
}
printf("%d", mul);
return 0;
}
上面的思路明白的话让我们再来一个例子,要求输入的三个数字里的最小值,比大小就相当于打擂台,看条件求最大还是最小,这里是求最小,最小的最厉害,能最终留在舞台上。
1,定义四个变量,x , y . z . min .
2,用scanf输入三个数字,赋给三个变量
3,判断x是否小于y,如果小于,就把x的值赋给min,否则将y值赋给min。
4,判断min是否小于z,如果小于,则min不变,反之则将z的值赋给min。
5,最后别忘记将min的值输出。
以下是流程图符号
接下来我将给大家举几个例子,可以发现,利用流程图可以很直观的表现出一个算法的所有步骤,我们将用流程图讲解三种基本结构
⭐1 顺序结构
这就是一种最简单的数据结构,完成一个处理框的操作后,执行下一个处理框的内容,这种结构只有一个入口点A和一个出口点B
⭐ 2 选择结构
判断框中要根据条件判断,看看符合哪个条件,就执行哪个处理框
例如判断一个数是否为偶数(偷个懒,画图还是用不好)
⭐3 接下来谈一谈循环结构
循环结构中,反复执行一系列操作,直到不满足条件为止
判断是否成立,如果成立,就执行相关处理,如果不成立就跳出。
三种结构用N-S流程图我们这次就同时画上了
仅仅是看图的话肯定不能很好理解,在这里我们举几个例子
还是求n的阶乘,用两种流程图该如何表示呢
仔细对比我们可以更好的理解两种流程图的表达形式(虽然没必要了解那么多,N-S流程图就当扩展扩展就好了)。
这篇文章到这里就要结束啦,作为刚入门的小萌新 欢迎大家过来指正哦。