算法入门篇(一)之语言基础

目录

一、语言基础

1.数据类型

基本数据类型

整型(Integer)

浮点型(Floating-point)

字符型(Character)

布尔型(Boolean)

抽象数据类型

数组(Array)

栈(Stack)

队列(Queue)

链表(Linked List)

树(Tree)

图(Graph)

散列表(Hash Table)

堆(Heap)

2.输入输出、数组、字符串

输入/输出(I/O)

数组

字符串

3.顺序结构、选择结构、循环结构

顺序结构

选择结构

循环结构

4.函数、递归

函数(Function)

递归(Recursion)


一、语言基础

1.数据类型

基本数据类型

  1. 整型(Integer)
    • 8位整数(byte)
    • 16位整数(short)
    • 32位整数(int)
    • 64位整数(long)
  2. 浮点型(Floating-point)
    • 32位浮点数(float)
    • 64位浮点数(double)
  3. 字符型(Character)
    • 通常用于表示单个字符(char)
  4. 布尔型(Boolean)
    • 通常有两个值:true 或 false

抽象数据类型

  1. 数组(Array)
    • 可以连续存储多个同类型元素的数据结构。
    • 优点:按索引查询元素速度快,遍历方便。
    • 缺点:大小固定后无法扩容,只能存储一种类型的数据,添加和删除操作慢。
  2. 栈(Stack)
    • 是一种特殊的线性表,特点是先进后出(LIFO)。
    • 主要操作包括入栈(push)和出栈(pop)。
    • 应用场景:实现递归功能。
  3. 队列(Queue)
    • 与栈相似,但特点是先进先出(FIFO)。
    • 主要操作包括入队(enqueue)和出队(dequeue)。
    • 应用场景:多线程阻塞队列管理。
  4. 链表(Linked List)
    • 物理存储单元上非连续的、非顺序的存储结构。
    • 每个元素包含两个结点,一个是数据域,另一个是指向下一个结点地址的指针域。
    • 优点:不需要初始化容量,可以任意加减元素,添加或删除元素快。
    • 缺点:查找元素需要遍历链表,占用空间较大。
  5. 树(Tree)
    • 由n(n>=1)个有限节点组成一个具有层次关系的集合。
    • 常见的树结构有二叉树、平衡树、搜索树等。
  6. 图(Graph)
    • 由节点(顶点)和边组成的集合。
    • 边可以是有向的或无向的,加权或不加权的。
    • 常见的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法等。
  7. 散列表(Hash Table)
    • 也称为哈希表或哈希映射。
    • 通过哈希函数将键映射到值,实现快速查找和插入。
  8. 堆(Heap)
    • 一种特殊的树形数据结构,通常是二叉树。
    • 最大堆或最小堆分别满足父节点大于或小于其子节点的特性。
    • 常见的应用是优先队列和堆排序。

2.输入输出、数组、字符串

输入/输出(I/O)

输入/输出(Input/Output, I/O)是算法与外界环境进行交互的方式。

  • 输入:算法开始执行前,从外部源(如用户、文件、网络等)获取的数据或信息。这些数据是算法处理的基础。

  • 输出:算法执行后,将处理结果返回给外部环境的过程。输出可以是文本、数字、图像等多种形式。

在编写算法时,需要明确指定输入和输出的格式,以确保算法的正确性和可读性。

数组

数组是一种用于存储固定大小同类型元素的顺序集合。

  • 特点

    • 数组中的元素按照它们在数组中的位置(索引)进行编号。
    • 数组的大小在创建时确定,并且之后不能更改。
    • 数组中的元素可以是任何数据类型,但所有元素的数据类型必须相同。
  • 用途:数组常用于存储和处理大量同类型数据,如排序、搜索等算法中。

  • 操作:常见的数组操作包括访问元素(通过索引)、修改元素、遍历数组等。

字符串

字符串是由一系列字符组成的文本数据。在计算机科学中,字符串通常被视为字符数组的一种特殊形式。

  • 特点

    • 字符串中的每个字符都有一个唯一的位置(索引),从0开始。
    • 字符串是不可变的,即一旦创建,就不能更改其内容(但可以通过创建新的字符串来实现修改)。
    • 字符串的长度是固定的,即它包含的字符数。
  • 用途:字符串在算法中常用于处理文本数据,如文本搜索、替换、格式化等。

  • 操作:常见的字符串操作包括连接(拼接)、切片(截取部分字符串)、查找(搜索子字符串)、替换等。

3.顺序结构、选择结构、循环结构

顺序结构

定义:顺序结构是最简单的程序结构,也是最基本的程序结构。它按照语句代码出现的先后顺序依次执行程序。

特点

  • 执行顺序是自上而下,依次执行。

  • 可以独立使用构成一个完整的程序,也可以作为程序的一部分,与其他结构一起构成复杂的程序。

示例:计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159 * r * r,然后输出圆的面积s。

选择结构

定义:选择结构(也称为分支结构)用于根据条件判断结果来控制程序的流程。

特点

  • 根据一个或多个条件选择执行不同的代码块。

  • 常见的选择结构语句有if-elseswitch-case等。

if (条件表达式1) {
    语句块1;
} else if (条件表达式2) {
    语句块2;
} else {
    语句块n;
}

注意:选择结构中的条件表达式通常有两种类型,即关系表达式和逻辑表达式。关系表达式如a > b,逻辑表达式如!(a > b)

循环结构

定义:循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。

特点

  • 根据条件重复执行一段代码。

  • 循环结构包含三个要素:循环变量、循环体和循环终止条件。

  • 循环结构有两种形式:当型循环(先判断后执行)和直到型循环(先执行后判断)。

4.函数、递归

函数(Function)

定义:函数是组织好的、可重复使用的、用来执行特定任务的代码块。函数可以提高代码的可读性、可维护性和重用性。

特点

  1. 封装性:函数将相关的代码块封装在一起,形成一个独立的单元。这使得代码更加模块化和结构化。

  2. 可重用性:函数可以被多次调用,从而避免了重复编写相同的代码。

  3. 输入与输出:函数可以接受参数(输入)并返回结果(输出)。这使得函数可以处理不同的数据,并产生相应的结果。

  4. 作用域:函数内部定义的变量和常量通常只在函数内部有效,即具有局部作用域。这有助于避免命名冲突和数据污染。

递归(Recursion)

定义:递归是一种解决问题的方法,其中函数直接或间接地调用自身来解决问题。递归通常用于处理可以分解为更小、相似子问题的问题。

特点

  1. 自身调用:递归函数在定义中直接或间接地调用自身。

  2. 基准情况:递归必须有一个或多个基准情况(base case),即不需要进一步递归调用就能直接求解的情况。基准情况是递归的出口,确保递归能够终止。

  3. 问题分解:递归通常将问题分解为更小、更简单的子问题,然后递归地解决这些子问题。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战族狼魂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值