C语言基础-基本算法

在之前的两篇文章中介绍了C语言的入门程序入门程序1,入门程序2,从这篇文章我们就开始介绍C语言基础。
今天来给大家介绍算法的特性和算法的表示。

算法的基本特性

算法包含两方面的内容:算法设计和算法分析

算法设计其实就是针对某一特定类型的问题而设计的一个实现过程。算法有以下几个特性:

  • 有穷性
  • 确定性
  • 可行性
  • 输入
  • 输出

也就是说我们在设计算法是的满足上面所说的特性。当然算法也是有好有坏的,那么我们怎样去衡量一个算法的优劣呢?
算法分析其实就是在衡量一个算法的优劣,通常会从一下几个方面来分析:

  1. 正确性
  2. 可读性
  3. 健壮性
  4. 时间复杂度和空间复杂度

算法的表达方式

在描述一个算法时通常使用的方法有:自然语言、流程图、N-S图等。

自然语言

自然语言这种表达方式通俗易懂,我们通过一个具体的实例了解一下。
需求:任意输入3个数,求出其中的最小数。
(1) 定义4个变量分别是a,b,c和min。
(2) 输入大小不同的三个数分别赋值给a,b,c。
(3) 判断a是否小于b,如果小于,则将a的值赋给min,否则将b的值赋给min。
(4) 判断min是否小于c,如果小于,则执行(5),否则将c的值赋给min。
(5) 输出min。
这种表达方式的好处就是简单易懂,但是当遇到复杂的算法时自然语言就显得不是很方便了。

流程图

流程图就是用一些图框来代表各种不同性质的操作,用流程线来指示算法的执行方向。他的特点就是直观形象,应用很广泛。
下图介绍了流程图的符号以及含义

流程图有三种基本结构,即顺序结构、选择结构和循环结构。

  • 顺序结构:顺序结构就是简单的线性结构

  • 选择结构:选择结构也称为分支结构

  • 循环结构:反复执行一系列操作,知道条件不成立时终止。

我们再把上面的需求用流程图来表示一下

N-S流程图

N-S流程图是将全部的算法写在一个矩形框内,省去了流程图中的流程线。下面继续看一个实例:
需求:输入一个数,判别是否为素数。

算法的基本特性和算法的表示介绍到就结束了。


往期文章
C语言学习入门01
C语言学习入门02

如果您觉得本篇文章对您有帮助,请转发给更多的人

C语言中文社区】是一个C语言视频教程、学习笔记、电子书、计算机二级资料等专注于C语言编程学习者的干货知识分享平台,精选深度文章,分享优秀干货类、技能类的学习资源,帮助学习中的你。

C语言基础-基本算法相关推荐

  1. C语言基础排序算法-选择排序

    C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...

  2. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  3. C/C++语言基础进阶算法备赛面试 经典、实用、趣味 程序设计编程300例精解每日一练第37天

    前言: 备赛蓝桥杯,大学电子设计大赛,C语言提高,算法准备,定位大厂刷题,所以每天一练,不是很适合新手,适合长期规划有一定基础的同学跟上,每日文档由三部分组成,基础题(适合备赛国二),趣味题(适合有兴 ...

  4. c malloc 头文件_C/C++笔试题:主要考察C/C++语言基础概念算法及编程,附参考答案...

    1.编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数: 答:char *strcpy(char *strDest, const char *strSrc) { if ...

  5. C++语言基础 —— STL —— 算法

    [概述] STL 是指 C++ 标准模板库,是 C++ 语言标准中的重要组成部分,其以模板类和模版函数的形式提供了各种数据结构与算法的精巧实现,如果能充分使用 STL,可以在代码空间.执行时间.编码效 ...

  6. C++语言基础 —— STL —— 算法 —— 排列组合算法

    [概述] 首先要了解什么是 "下一个" 排列组合,什么是 "上一个" 排列组合. 假设有三个数字组成的序列:{a,b,c} 则这个序列有6种可能的排列组合:ab ...

  7. C++ 语言基础 —— STL —— 算法 —— 二分查找算法

    STL 中,在 <algorithm> 头文件里提供了两个利用二分查找的方法在一个排好序的数组中进行查找. 在一个从小到大的排好序的数组中: lower_bound(begin,end,n ...

  8. C++语言基础 —— STL —— 算法 —— unique() 的使用

    unique() 位于 <algorithm> 头文件中,其作用是元素去重,即删除序列中所有相邻的重复元素. 其删除元素,只是一个伪去除,只是重新排列了序列中的元素,将相邻的重复元素添加到 ...

  9. 动图图解C语言选择排序算法,含代码分析

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

最新文章

  1. spring 注解试事物源码解析
  2. A1035. 素数之和
  3. java sortedset_Java类集-SortedSet接口 | 学步园
  4. 实现输入一个字符串,分别将大写字母、小写字母、数字、其他字符存到列表里面并且输出列表
  5. [Abp vNext 源码分析] - 19. 多租户
  6. linux方舟部落日志显示攻击者,r7800日志显示被攻击
  7. 检测到无效的异常处理程序例程。_异常控制流(1):异常概述和基本类型
  8. jpg格式电脑怎么弄_jpg图片格式如何操作
  9. 简述程序化交易的优缺点都是什么?
  10. 链接计算机网络密码错误,手机连不上路由器显示密码错误怎么办?
  11. TCP/IP协议卷一(一)
  12. 【Allegro_SPB_16.6安装详细教程】手把手搭建到Win10
  13. 搜索专题——迷宫寻宝
  14. mysql也有dblink
  15. 《无线通信与网络》 第一章 概述
  16. 大小鲨鱼走红 纳米防水技能大有作为
  17. 使用PLAN法提升执行力——笔记与答案
  18. MUR860D-ASEMI快恢复二极管的作用
  19. 【证券】什么是开仓、持仓和平仓?
  20. 自定义ajax脚本出粗哦,jQuery DataTables插件自定义Ajax分页实例解析

热门文章

  1. 深度探索C++ 对象模型(4)-Default Copy Constructor(4)
  2. 2021年MathorCupD题思路
  3. Linux常用的基本命令head、tail、tar、grep、date、cal(二)
  4. [armv9]-ARM最新架构为memcpy/memset底层的实现提供新的指令
  5. Linux Kernel aarch64 Crypto原理和框架介绍
  6. printf()详解
  7. Windows消息机制学习笔记(二)—— 窗口与线程
  8. Windows进程与线程学习笔记(六)—— 线程切换
  9. Windows保护模式学习笔记(六)—— 10-10-12分页
  10. 6.windows线程切换_主动切换