七叶笔记 » golang编程 » 《Golang学习数据结构和算法》中文版 第1篇

《Golang学习数据结构和算法》中文版 第1篇

《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  

让我们在下一节里看看数据结构的分类和结构设计模式。

数据结构分类与结构设计模式

你可以使用分类选择数据结构。在本节里,我们详细讨论数据结构分类。与此数据结构相关的设计模式会在此分类后面涵盖。

     在下一节里,我们将看看数据结构的分类。

数据结构的分类

      术语数据结构引用了计算机内存里的数据组织,以便快速地检索数据处理。它是一种数据组织方案,把数据结构的功能定义和它的实现进行解耦。数据结构是基于问题类型和在数据上执行的操作而选择的。

      如果数据结构要求不同的数据类型,我们可以选择异构的数据结构。链表,有序列表和无序列表被分到异构数据结构。线性数据结构是列表,集合,元组,队列,栈和堆。树,表和容器被划分到非线性数据结构。二维和多维数组被看成同构数据结构。动态数据结构是字典,树集和序列。

      数据结构的分类显示在下图:

数据结构分类

      在后面几节里让我们看看列表,元组和堆。

下一篇:

相关文章