数据结构

本文深入探讨数据信息的表示与组织,解析线性与非线性结构特性,涵盖线性表、栈、队列、树、图等核心概念,以及查找与排序算法,如顺序查找、折半查找、插入排序、快速排序等,为理解复杂数据处理奠定基础。

研究数据信息如何表示、组织、存储、加工和数据之间的逻辑关系。
分为线性结构和非线性结构。

1.线性结构

线性结构:元素与元素之前是一对一的关系。分为线性表、栈和队列。

(1)线性表
a0→a1→…→an
存在唯一的第一元素a0
存在唯一的最后元素an
各元素均有唯一的后继
各元素均有唯一的前驱
(2)栈
操作受限的线性表
LIFO:后进先出
限定仅在表尾进行插入或删除操作的线性表,后进先出。
入栈:PUSH 最先插入的元素放在栈底
出栈:POP 最后元素先出
(3)队列
操作受限的线性表,逻辑结构
入列→an→…→a0→出列

2.非线性结构

有两个或两个以上的直接后继
(1)树
数据有明显的层次关系,其中二叉树:至多有两个子树,且有左右次序。
(2)图
图G由两个集合V,E组成
G= (V,E)
V:顶点有穷非空集合
E:顶点偶对的有穷集
在这里插入图片描述
V(G)={A,B,C,D}
E(G)={<A,B>,<B,C>,<C,D>,<D,A>,<A,C>}

3.查找

(1)顺序查找
线性查找,从表的一段开始,向另一端逐个用给定值k与关键码比较。
(2)折半查找
线性表按从小到大排序,关键字为key,查找范围下限认为low=0,上限为high=n-1,中点为m=(low+high)/ 2→am,用key与am比较,若key>am,替换下限low=mid+1,若key<am,替换上限high=mid-1,直到low>high。
例如:[1,2,3,4,5,6]查找1
m=3,key=1<4,high=2
m=1,key=1<2,high=0
(3)分块查找
将数据(a0,a1,…,an-1)均分为B块,则前B-1块中节点个数为s=n/b,第B块节点数为n-(B-1)*s,每一块中的数据无需排序,前一块中的最大数据小于后一块中最小数据,构造索引表index[1…B],每个元素index[i]存放第i块的最大关键字key,该块的起始位置start,结束位置end。

4.排序

逐步扩大有序子序列。
(1)插入类:
将无序子序列中的一个记录插入到有序子序列中,基于顺序查找:直接插入。
基于折半查找:折半插入排序。基于逐趟缩小增量:希尔排序。
(2)交换类:
交换无序子序列的元素得到其中关键字最小或最大的元素,加入有序子序列中,分为:快速排序和冒泡排序。
(3)选择类:
选择关键字最大或最小的元素,加入子序列中。
(4)归并类:
归并排序是一种分治法,它反复将两个已经排序的序列合并成一个序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值