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

无偿分享学习资料,需要的小伙伴评论区或私信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.冒泡排序

cpp 复制代码
    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.斐波那契函数问题

cpp 复制代码
//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。。。

相关推荐
wyh要好好学习42 分钟前
C# WPF 记录DataGrid的表头顺序,下次打开界面时应用到表格中
开发语言·c#·wpf
AitTech42 分钟前
C#实现:电脑系统信息的全面获取与监控
开发语言·c#
咩咩觉主1 小时前
尽量通俗易懂地概述.Net && U nity跨语言/跨平台相关知识
unity·c#·.net·.netcore
yngsqq2 小时前
035集——BOUNDARY获取图形外轮廓(CAD—C#二次开发入门)
开发语言·javascript·c#
墨笺染尘缘2 小时前
Unity——对RectTransform进行操作
ui·unity·c#·游戏引擎
Nydia.J3 小时前
【学习笔记】数据结构(七)
数据结构·考研
IT规划师11 小时前
开源 - Ideal库 - 常用枚举扩展方法(二)
开源·c#·.net core·ideal库·枚举转换
吾与谁归in14 小时前
【C#设计模式(8)——过滤器模式(Adapter Pattern)】
设计模式·c#·过滤器模式
子不语15 小时前
C#程序开发,检测当前电脑已经安装的软件目录
开发语言·c#·安装·列表·软件
一步一个foot-print15 小时前
C# unity 星期几 年月日控制
unity·c#