数据结构与算法简述

一、数据结构(Data Structure)

1. 概念:

表示一组数据在计算机中是如何存储的,指相互之间存在一种或多种特定关系的数据元素的集合。

2. 分类:

① 逻辑数据结构:反映数据对象中数据元素之间的相互关系,与具体如何存储无关。

集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。
在这里插入图片描述
线性结构:线性结构中的数据元素之间是一对一的关系。
在这里插入图片描述
树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。
在这里插入图片描述
图形结构:图形结构的数据元素是多对多的关系。
在这里插入图片描述
② 物理数据结构:指数据的逻辑结构在OS(操作系统)中的存储方式。

顺序结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系的物理关系是一致的(例如数组)
在这里插入图片描述
链式结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的(链表)
在这里插入图片描述

二、算法:

1. 概念:

算法是解决特定问题求解步骤的描述,在计算机内表现为指令的有限序列,并且每条指令表示一个或多个操作。简单来说,算法就是使用特定的数据结构操作数据的一组方法。

2. 特性:

① 输入:算法有零个或多个输入;

② 输出:只有一个或多个输出;

③ 有穷性:算法在执行有限的步骤之后自动结束而不会出现无限循环,并且一个步骤在可接受的时间内完成;

④ 确定性:算法的每个步骤都有确定含义,不会出现二义性;

⑤ 可行性:算法的每一步必须是可行的,即每一步都能通过执行有限次完成。

3. 设计:

① 正确性;② 可读性;③ 健壮性;④ 时间效率高;⑤ 空间使用率低;⑥ 实现简单。

案例:斐波那契数列的实现

package fibonacciSequence;

public class Fibo {
    public static void main(String[] args) {
        for(int i = 1; i < 10; i++) {
            System.out.print(fibo(i) + " ");
        }
    }
    public static long fibo(long n) {
        if(n < 0) {
            throw new IllegalArgumentException("fibo n must be more than 0");
        }
        if(n == 1 || n == 2) {
            return 1;
        } else {
            return fibo(n-1) + fibo(n-2);
        }
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43508801/article/details/88825859