算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第1张图片

欢迎宝子

准备好迎接知识的冲击了吗?

让我们一起走进编程的世界(不秃头版),感受知识的海洋吧

        我们大概知道一个程序通常包含算法,数据结构,程序设计方法以及语言工具和环境这四个方面,而算法是其中最重要的部分。通过这篇文章,我将带领大家初步认识算法的基本知识。

目录

        一.了解算法的特性

        二,我们了解了解算法的优劣(很重要哦)

        三, 算法的描述

四, 用流程图的方法阐述算法

         接下来讲一讲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的值输出。

四, 用流程图的方法阐述算法

以下是流程图符号

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第2张图片

          接下来我将给大家举几个例子,可以发现,利用流程图可以很直观的表现出一个算法的所有步骤,我们将用流程图讲解三种基本结构

        ⭐1 顺序结构

        

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第3张图片

         这就是一种最简单的数据结构,完成一个处理框的操作后,执行下一个处理框的内容,这种结构只有一个入口点A和一个出口点B

       ⭐ 2 选择结构

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第4张图片

 判断框中要根据条件判断,看看符合哪个条件,就执行哪个处理框

例如判断一个数是否为偶数(偷个懒,画图还是用不好)

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第5张图片

⭐3  接下来谈一谈循环结构

循环结构中,反复执行一系列操作,直到不满足条件为止

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第6张图片

 判断是否成立,如果成立,就执行相关处理,如果不成立就跳出。


         接下来讲一讲N-S流程图(就当扩展,理解上面的就可以了)

三种结构用N-S流程图我们这次就同时画上了

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第7张图片

仅仅是看图的话肯定不能很好理解,在这里我们举几个例子

还是求n的阶乘,用两种流程图该如何表示呢

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第8张图片

 仔细对比我们可以更好的理解两种流程图的表达形式(虽然没必要了解那么多,N-S流程图就当扩展扩展就好了)。

        这篇文章到这里就要结束啦,作为刚入门的小萌新 欢迎大家过来指正哦。

算法的简单介绍(*超简单入门讲解,带你了解算法的基础知识*)_第9张图片

你可能感兴趣的:(c语言知识详解,算法,c语言,c++)