【算法-程序的灵魂#谭浩强配套】(适合专升本、考研)

2024-05-09 10:44

本文主要是介绍【算法-程序的灵魂#谭浩强配套】(适合专升本、考研),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。

完整资料如下:

1.一个程序主要包括以下两方面信息:程序=算法+数据结构

数据结构:对数据的描述。

算法:对操作的描述。

2.什么是算法?

为解决一个一个问题而采取的方法和步骤就是算法

3.计算机算法可分为两大类:数值运算算法、非数值运算算法

4.算法的特性:

有穷性:有限的操作步骤。

确定性:每一个步骤都应该是确定的,无二义性。

零个或多个输入

一个或多个输出

可行性:每一个步骤都是能有效执行的。

5.如何表示一个算法

  • 自然语言

    <!--使用自然自然表示算法通俗易懂,但是文字冗长,容易出现分歧,且含义往往不太严格,需要上下文判断。-->

  • 流程图【传统流程图、结构化流程图、N-S流程图】

    <!--流程图分为3种,传统流程图、结构化流程图和N-S流程图。传统流程图又称为“BS型算法”,是最早的流程图表算法方式,其难以阅读、修改,算法的可靠性与维护行不高,很难看清算法逻辑。为了解决传统流程图的弊端,人们规定了几种基本结构-顺序结构、选择结构、循环结构,就诞生了结构化流程图,结构化流程图表示的算法直观形象、易于理解,但是当算法比较复杂时,画起来比较费时且难以修改,也难以清楚的表达算法。N-S流程图是由结构化流程图演变而来,只是去掉了结构化流程图的流程线。-->

  • 伪代码

    <!--近似于高级语言的文字和符号来描述算法,书写方便自由,无严格语法规则,格式紧凑,修改方便,容易看懂,也便于向计算机语言过渡,但是编写的算法不如流程图直观,可能出现逻辑上的错误。一般begin表示开始,end表示结束,专业算法设计人员常采用伪代码描述算法。-->

  • 程序设计语言

    <!--顾名思义就是使用计算机语言来表示算法,优点当然是可以直接在计算机上运行,缺点就是语法严格。-->

6.一个结构化流程图应该包含以下三方面内容

  • 表示相应操作的框
  • 带箭头的流程线
  • 框内外必要的文字说明

⚠️注意:

  • 连接点:用于将画在不同地方的流程线连接起来

  • 流程线:表示程序运行的方向,切记加箭头

7.三种基本结构:顺序结构、选择结构、循环结构(当型循环结构、直到型循环结构)

三种基本结构的共同点:只有一个入口与出口、结构内每个部分都有机会执行、不存在死循环

⚠️注意:选择结构虽然有两个方向出口,但是最终只会执行一个方向,所以也是一个出口。

8.N-S流程图

2.24:顺序结构

2.25:选择结构

2.26:当型循环结构(分为for、while循环)

2.27:直到型循环结构

9.由三种基本结构组成的算法结构,可以解决任何复杂的问题。

10.如何保证得到结构化程序

自顶而下(自下而上)

逐步细化(逐步积累)

模块化设计

结构化编码

11.什么是结构化程序设计(模块化程序设计)

以模块设计为中心,将程序分成若干个独立的模块,每个独立的模块都使用三种基本结构构成的程序称为结构化程序。它的主要观点是

采用自顶向下、逐步求精的程序设计方法;使用3种根本控制结构构造程序,任何程序都可由顺序、选择、循环这3种根本控制结构构造 。

⚠️注意:结构化程序主要由三种基本结构构成,但并非包含三种基本结构的程序就是结构化程序,也不是必须包含三种基本结构。

12.什么是结构化算法

使用三种基本结构描述的算法就是结构化算法

典型算法

1.冒泡排序

    int a[5],t;printf("请输入五个数字:\n");for(int i=0;i<5;i++){scanf("%d",&a[i]);}printf("输入完成!\n\n");for(int i=0;i<4;i++){                     //外层循环:轮for(int j=0;j<4-i;j++){               //内层循环:次if(a[j]>a[j+1]){                  //例如a0与a1比较,若a0大于a1,则互换位置,这样较大者放在第二位,接着t=a[j],a[j]=a[j+1],a[j+1]=t;  //和第三位比较,若大于第三位又互换位置,以此类推,将较大者移到最后面}}}printf("从小到达循序为:");for(int i=0;i<5;i++){printf("%d\t",a[i]);}

2.斐波那契函数问题

//1.普通解法
#include<stdio.h>
int main()
{int f1=1,f2=1,i;for(i=1;i<=20;i++){printf("%12d %12d",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f2+f1;}return 0;
}
​
//2.数组解法
#include<stdio.h>
int main()
{int a[20]={1,1};int i;for(i=2;i<20;i++)a[i]=a[i-2]+a[i-1];for(i=0;i<20;i++){if(i%3==0)printf("\n");printf("%12d",a[i]);}return 0;
}

完整学习资料评论区或私信dd。。。

这篇关于【算法-程序的灵魂#谭浩强配套】(适合专升本、考研)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/973190

相关文章

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件