《算法设计与分析》一一第3章 线性表的遍历

简介:

第3章 线性表的遍历
线性表是一种简单又广泛使用的数据结构。线性表中所有的元素组成线性序列。除头尾之外的每个元素都有唯一的前驱和后继;头元素只有后继,没有前驱,而尾元素只有前驱,没有后继。线性表的特征决定了我们很容易从头至尾依次扫描其中的每一个元素,而这一简单的遍历过程可以解决很多重要的算法问题。
线性表的遍历是在算法的简单性与高效性之间的一种权衡。基于线性表遍历的算法往往原理简单、易于实现和维护;但是其效率往往较低,有较大的提升空间。以线性表遍历为基础,我们可以进行更复杂的算法设计,例如,以遍历为基础对线性表中的元素进行划分以使用分治策略(参见6.1节),在线性表的元素间建立堆结构(参见7章),将线性表扩展到二维以表示图(参见第4、5章)等。但是在提升效率的同时,算法的设计、实现、维护的难度相应地增加。
线性表在实际存储的时候,有两种不同的方式:一种是数组,另一种是链表。数组是常数时间寻址,即访问任何位置的元素都是常数时间。链表是线性时间寻址,访问第k个元素的时间大致为O(k)。但是数组的大小是预先指定的,不能运行时动态调整。链表可以在运行时动态调整其大小。数组和链表的这一差别对有些算法是关键性的,如折半查找(参见9.1节)等。
本章我们以排序、选择、查找这3个经典算法问题为例,讨论基于线性表遍历的算法设计与分析。

相关文章
|
4月前
|
算法 程序员
【算法训练-二叉树 二】【重建二叉树】依据前序与中序遍历序列重建二叉树
【算法训练-二叉树 二】【重建二叉树】依据前序与中序遍历序列重建二叉树
36 0
|
23天前
|
算法
【算法与数据结构】二叉树(前中后)序遍历2
【算法与数据结构】二叉树(前中后)序遍历
|
4月前
|
算法 Python
Python算法——树的遍历顺序变换
Python算法——树的遍历顺序变换
178 4
|
3月前
|
算法 容器
数据结构与算法之树的遍历
树的 “前” “中” “后” 遍历 //如果要再写一个树太费时间了,所以博主在这篇博客只给出核心代码并赋予GIF演示动画,望大家好好理解以对树的三种遍历方式有更为深刻的理解
44 0
|
2月前
|
机器学习/深度学习 算法 Java
递归算法还有哪些是你不知道的----【探讨Java经典遍历问题和面试题】
递归算法还有哪些是你不知道的----【探讨Java经典遍历问题和面试题】
32 1
|
3月前
|
存储 算法 JavaScript
JS算法-二叉树的后序遍历
JS算法-二叉树的后序遍历
|
3月前
|
算法 JavaScript
JS算法-二叉树的前序遍历
JS算法-二叉树的前序遍历
|
3月前
|
存储 算法 前端开发
前端算法- 二叉树的中序遍历
前端算法- 二叉树的中序遍历
|
3月前
|
算法
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
41 0
|
3月前
|
算法 Java C++
数据结构与算法面试题:实现二叉树的遍历(前序、中序、后序、层序)。
数据结构与算法面试题:实现二叉树的遍历(前序、中序、后序、层序)。
21 0