数据结构和算法(Golang实现)(30)查找算法-2-3-4树和普通红黑树

2020-04-14
阅读 2 分钟
4k
某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,并且称其为红黑树,因为左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学。在这里,我们区分开左倾红黑树和普通红黑树。

数据结构和算法(Golang实现)(29)查找算法-2-3树和左倾红黑树

2020-04-07
阅读 28 分钟
3.6k
某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,并且称其为红黑树,因为左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学。在这里,我们区分开左倾红黑树和普通红黑树。

数据结构和算法(Golang实现)(28)查找算法-AVL树

2020-04-07
阅读 2 分钟
3.6k
AVL树是一棵严格自平衡的二叉查找树,1962年,发明者Adelson-Velsky和Landis发表了论文,以两个作者的名字命名了该数据结构,这是较早发明的平衡二叉树。

数据结构和算法(Golang实现)(27)查找算法-二叉查找树

2020-04-07
阅读 15 分钟
3.3k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。二叉查找树二叉查找树,又叫二叉排序树,二叉搜索树,是一种有特定规则的二叉树,定义如下:它是一颗二叉树,或者是空树。左子树所有节点的值都小于它的根节点,右子树所有节点的值都大于它的根节点。左右子树也是一颗二叉...

数据结构和算法(Golang实现)(26)查找算法-哈希表

2020-04-07
阅读 14 分钟
5.6k
我们要通过一个键key来查找相应的值value。有一种最简单的方式,就是将键值对存放在链表里,然后遍历链表来查找是否存在key,存在则更新键对应的值,不存在则将键值对链接到链表上。

数据结构和算法(Golang实现)(25)排序算法-快速排序

2020-04-07
阅读 17 分钟
3.8k
快速排序是一种分治策略的排序算法,是由英国计算机科学家Tony Hoare发明的, 该算法被发布在1961年的Communications of the ACM 国际计算机学会月刊。

数据结构和算法(Golang实现)(24)排序算法-优先队列及堆排序

2020-04-07
阅读 7 分钟
4k
堆排序(Heap Sort)由威尔士-加拿大计算机科学家J. W. J. Williams在1964年发明,它利用了二叉堆(A binary heap)的性质实现了排序,并证明了二叉堆数据结构的可用性。同年,美国籍计算机科学家R. W. Floyd在其树排序研究的基础上,发布了一个改进的更好的原地排序的堆排序版本。

数据结构和算法(Golang实现)(23)排序算法-归并排序

2020-04-07
阅读 10 分钟
2.6k
归并排序首先由著名的现代计算机之父John_von_Neumann在1945年发明,被用在了EDVAC(一台美国早期电子计算机),足足用墨水写了 23 页的排序程序。注:冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。

数据结构和算法(Golang实现)(22)排序算法-希尔排序

2020-04-07
阅读 4 分钟
2.9k
1959 年一个叫Donald L. Shell (March 1, 1924 – November 2, 2015)的美国人在Communications of the ACM 国际计算机学会月刊发布了一个排序算法,从此名为希尔排序的算法诞生了。

数据结构和算法(Golang实现)(21)排序算法-插入排序

2020-04-07
阅读 3 分钟
2.5k
除了我以外,有些人打扑克时习惯从第二张牌开始,和第一张牌比较,第二张牌如果比第一张牌小那么插入到第一张牌前面,这样前两张牌都排好序了,接着从第三张牌开始,将它插入到已排好序的前两张牌里,形成三张排好序的牌,后面第四张牌继续插入到前面已排好序的三张牌里,直至排序完。

数据结构和算法(Golang实现)(20)排序算法-选择排序

2020-04-07
阅读 4 分钟
2.2k
选择排序,一般我们指的是简单选择排序,也可以叫直接选择排序,它不像冒泡排序一样相邻地交换元素,而是通过选择最小的元素,每轮迭代只需交换一次。虽然交换次数比冒泡少很多,但效率和冒泡排序一样的糟糕。

数据结构和算法(Golang实现)(19)排序算法-冒泡排序

2020-04-07
阅读 3 分钟
2.4k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。冒泡排序冒泡排序是大多数人学的第一种排序算法,在面试中,也是问的最多的一种,有时候还要求手写排序代码,因为比较简单。冒泡排序属于交换类的排序算法。一、算法介绍现在有一堆乱序的数,比如:5 9 1 6 8 14 6 49 25 4...

数据结构和算法(Golang实现)(18)排序算法-前言

2020-04-07
阅读 2 分钟
2.4k
所以,排序这个很自然的需求就出来了。比如小明打了5只兔子,小王打了8只,还有部落其他一百多个人也打了。我们要论功行赏,谁打得多,谁就奖赏大一点。

数据结构和算法(Golang实现)(17)常见数据结构-树

2020-04-07
阅读 6 分钟
3.9k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。树树是一种比较高级的基础数据结构,由n个有限节点组成的具有层次关系的集合。树的定义:有节点间的层次关系,分为父节点和子节点。有唯一一个根节点,该根节点没有父节点。除了根节点,每个节点有且只有一个父节点。每一...

数据结构和算法(Golang实现)(16)常见数据结构-字典

2020-04-07
阅读 6 分钟
3.1k
我们翻阅书籍时,很多时候都要查找目录,然后定位到我们要的页数,比如我们查找某个英文单词时,会从英语字典里查看单词表目录,然后定位到词的那一页。

数据结构和算法(Golang实现)(15)常见数据结构-列表

2020-04-07
阅读 15 分钟
3.5k
列表List:存放数据,数据按顺序排列,可以依次入队和出队,有序号关系,可以取出某序号的数据。先进先出的队列 (queue)和先进后出的栈(stack)都是列表。大家也经常听说一种叫线性表的数据结构,表示具有相同特性的数据元素的有限序列,实际上就是列表的同义词。

数据结构和算法(Golang实现)(14)常见数据结构-栈和队列

2020-04-07
阅读 8 分钟
2.7k
我们日常生活中,都需要将物品排列,或者安排事情的先后顺序。更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了点来,排完队就离开了,有些人晚一点,才刚刚进去人群排队。

数据结构和算法(Golang实现)(13)常见数据结构-可变长数组

2020-04-07
阅读 7 分钟
4.3k
因为数组大小是固定的,当数据元素特别多时,固定的数组无法储存这么多的值,所以可变长数组出现了,这也是一种数据结构。在Golang语言中,可变长数组被内置在语言里面:切片slice。

数据结构和算法(Golang实现)(12)常见数据结构-链表

2020-04-07
阅读 7 分钟
3.3k
讲数据结构就离不开讲链表。因为数据结构是用来组织数据的,如何将一个数据关联到另外一个数据呢?链表可以将数据和数据之间关联起来,从一个数据指向另外一个数据。

数据结构和算法(Golang实现)(11)常见数据结构-前言

2020-04-07
阅读 2 分钟
2k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。常见数据结构及算法数据结构主要用来组织数据,也作为数据的容器,载体。各种各样的算法,都需要使用一定的数据结构来组织数据。常见的典型数据结构有:链表栈和队列树图上述可以延伸出各种各样的术语和结构,如列表,集合...

数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法

2020-04-07
阅读 3 分钟
2.7k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。算法复杂度主方法有时候,我们要评估一个算法的复杂度,但是算法被分散为几个递归的子问题,这样评估起来很难,有一个数学公式可以很快地评估出来。一、复杂度主方法主方法,也可以叫主定理。对于那些用分治法,有递推关系...

数据结构和算法(Golang实现)(9)基础知识-算法复杂度及渐进符号

2020-04-07
阅读 4 分钟
2.2k
首先每个程序运行过程中,都要占用一定的计算机资源,比如内存,磁盘等,这些是空间,计算过程中需要判断,循环执行某些逻辑,周而反复,这些是时间。

数据结构和算法(Golang实现)(8.2)基础知识-分治法和递归

2020-04-07
阅读 5 分钟
3k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。分治法和递归在计算机科学中,分治法是一种很重要的算法。字面上的解释是分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题。直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。分治法一...

数据结构和算法(Golang实现)(8.1)基础知识-前言

2020-04-07
阅读 5 分钟
3.1k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。基础知识学习数据结构和算法。我们要知道一些基础的知识。一、什么是算法算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等。在计算机科技里,它表示什么呢?计算机,顾名思义...

数据结构和算法(Golang实现)(7)简单入门Golang-标准库

2020-04-07
阅读 3 分钟
3.9k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。使用标准库一、避免重复造轮子官方提供了很多库给我们用,是封装好的轮子,比如包fmt,我们多次使用它来打印数据。我们可以查看到其里面的实现: {代码...} 函数Println是直接打印并换行,Printf的作用是格式化输出,如: ...

数据结构和算法(Golang实现)(6)简单入门Golang-并发、协程和信道

2020-04-07
阅读 8 分钟
2.8k
Golang语言提供了go关键字,以及名为chan的数据类型,以及一些标准库的并发锁等,我们将会简单介绍一下并发的一些概念,然后学习这些Golang特征知识。

数据结构和算法(Golang实现)(5)简单入门Golang-接口

2020-04-07
阅读 6 分钟
2.5k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。接口在Golang世界中,有一种叫interface的东西,很是神奇。一、数据类型 interface{}如果你事前并不知道变量是哪种数据类型,不知道它是整数还是字符串,但是你还是想要使用它。Golang就产生了名为interface{}的数据类型,...

数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法

2020-04-07
阅读 5 分钟
2.3k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。结构体和方法一、值,指针和引用我们现在有一段程序: {代码...} 打印出: {代码...} 那么a,b是一个值变量,而c是指针变量,c1是引用变量。如果&加在变量a前:c := &a,表示取变量a的内存地址,c指向了a,它是一...

数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句

2020-04-07
阅读 3 分钟
1.9k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。流程控制语句计算机编程语言中,流程控制语句很重要,可以让机器知道什么时候做什么事,做几次。主要有条件和循环语句。Golang只有一种循环:for,只有一种判断:if,还有一种特殊的switch条件选择语句。一、条件语句举个...

数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数

2020-04-07
阅读 10 分钟
3.1k
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。包、变量和函数一、举个例子现在我们来建立一个完整的程序main.go: {代码...} 在相同目录下新建diy文件夹,文件下新建一个diy.go文件(名字任取): {代码...} 进入文件所在目录,打开命令行终端,执行: {代码...} 会显...