《Learn Data Structures and Algorithms with Golang》作者: Bhagvan Kommadi
数据结构和算法
数据结构是数据的编排,为了减少使用的存储空间和执行不同任务时的难度。数据结构被用来处理和工作在不同领域里的大量数据,例如数据库管理和internet索引服务。
本章我们关注在抽象数据类型的定义上面,抽象数据类型把数据结构分为线性的(linear),非线性的(nonlinear),同构的(homogeneous),异构的(heterogeneous),以及动态的(dynamic)类型。抽象数据类型,例如容器(Container),列表(List),集合(Set),映射(Map),图(Graph),栈(Stack),和队列(Queue),都会在本章里出现。我们也会覆盖数据结构的性能分析,选择合适的数据结构,以及结构设计模式。
读者可以用Go语言里适当的数据结构开始编写基本算法。给定一个问题,选择数据结构与不同的算法将是第一个步骤。此后做性能分析是下一个步骤。不同算法的时间和空间分析有助于比较算法以及选择最佳算法。开始前了解Go的基本知识是必不可少的。
本章覆盖以下主题:
- 数据结构的分类和结构设计模式
- 算法的描述
- 复杂度和性能分析
- 蛮力(Brute force)算法
- 分而治之(Divide and conquer)算法
- 回溯(Backtracking)算法
技术要求
为你的操作系统安装Go 1.10(版本。
本章代码文件可以在GitHub(with-Golang/tree/master/Chapter01)上面找到。
运行hello world(https://github.com/PacktPublishing/Learn-Data-Structures-and-Algorithms-with-Golang/tree/master/hello_world)程序来检查Go的安装:
//main package has examples shown
// in Hands-On Data Structures and algorithms with Go book
package main
// importing fmt package
import (
"fmt"
)
// main method
func main() {
fmt.Println("Hello World")
}
运行以下命令:
go build
./hello_world
让我们在下一节里看看数据结构的分类和结构设计模式。
数据结构分类与结构设计模式
你可以使用分类选择数据结构。在本节里,我们详细讨论数据结构分类。与此数据结构相关的设计模式会在此分类后面涵盖。
在下一节里,我们将看看数据结构的分类。
数据结构的分类
术语数据结构引用了计算机内存里的数据组织,以便快速地检索数据处理。它是一种数据组织方案,把数据结构的功能定义和它的实现进行解耦。数据结构是基于问题类型和在数据上执行的操作而选择的。
如果数据结构要求不同的数据类型,我们可以选择异构的数据结构。链表,有序列表和无序列表被分到异构数据结构。线性数据结构是列表,集合,元组,队列,栈和堆。树,表和容器被划分到非线性数据结构。二维和多维数组被看成同构数据结构。动态数据结构是字典,树集和序列。
数据结构的分类显示在下图:
在后面几节里让我们看看列表,元组和堆。
下一篇: