数据结构与算法--绪论

本文介绍了数据结构的基础概念,包括数据、数据元素、数据项、逻辑结构(集合、线性、树形、图状)、存储结构(顺序、链式)以及抽象数据类型。此外,详细讲解了值传递、地址传递和引用传递的区别,并讨论了算法描述、评价指标和时间复杂度的重要性。
摘要由CSDN通过智能技术生成

01绪论

数据结构是一门研究 非数值计算问题 中计算机的操作对象及对象之间关系和运算的学科。

1.1 基本概念和术语

(1) 数据:所有能输入到计算机中、用于描述客观事物的符号,不仅包括整型、浮点型点数值类型,还包括声音、图像、视频等非数值类型。

(2) 数据元素:组成数据的、有一定意义 的 基本单位 ,也称为结点或记录。

(3) 数据项:有独立含义的数据 最小单位 ,也称为 。以结构体为例,一个数据元素对应一个结构体;一个数据项对应结构体变量中的一个成员。

(4) 数据的逻辑结构:数据元素之间的逻辑关系,包括:

  • 集合:数据元素除同属于一个集合外,无其他关系;

  • 线性结构:数据元素是一对一的关系,如线性表、栈、队列;

  • 树形结构:数据元素之间是一对多的关系;

  • 图状结构:数据元素是多对多的关系。

(5) 数据的存储结构:数据的逻辑结构在计算机存储器中的实现,包括

  • 顺序存储结构:使用一段连续的存储空间,借助元素在内存中的相对位置来表示数据元素间的逻辑关系。逻辑上相邻的元素,其存储位置也相邻。

  • 链式存储结构:无需使用连续的存储空间,借助指针来表示元素间的逻辑关系。

(6)抽象数据类型(ADT):指一个 数学模型 及定义在该模型上的一组 操作

  • 数据抽象

  • 数据封装

1.2 值传递、地址传递、引用传递

引用即变量的别名,也就是为变量本身。常用于函数形参,便于实现数据的双向传递。

三种数值传递方法:值传递、地址传递、引用传递。

(1)值传递

void swap(int x, int y)
{
    int temp = x;
    x = y;
    y = temp;
}

当执行语句 swap(a, b) 时,交换的是函数体中的局部变量,a、b 的值并未交换。

(2)地址传递

void swap(int *x, int *y)
{
    int temp = *x;
    *x = *y;
    *y = temp;
}

当执行语句 swap(&a, &b)时,将 a、b 的地址传入函数,实现了数值交换。

(3)引用传递

void swap(int& x, int& y)
{
    int temp = x;
    x = y;
    y = temp;
}

当执行语句 swap(a, b) 时,实际交换的也是 a、b ,故而完成了值的交换。

1.3 算法描述与算法分析

(1)算法是指解决特定问题的具体步骤描述,是指令的有限序列。其特性包括:

  • 有穷性:算法必须在执行有限步骤后结束;

  • 确定性:算法每一步骤必须是确切定义的,不能有二义性;

  • 可行性:算法是能行的;

  • 输入:有零个或多个输入;

  • 输出:有一个或多个输出。

(2)算法的评价指标:

  • 正确性

  • 可读性

  • 健壮性

  • 效率

(3)时间复杂度:大 O 表示法。常用时间复杂度:

O(1)<O(log_2n)<O(n)<O(nlog_2n)<O(n^2)<O(n^3)<O(n^k)<O(2^n)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值