摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 字典 我们翻阅书籍时,很多时候都要查找目录,然后定位到我们要的页数,比如我们查找某个英文单词时,会从英语字典里查看单词表目录,然后定位到词的那一页。 计算机中,也有这种需求。 一、字典 字典 阅读全文
posted @ 2020-04-18 12:22 陈星星哦 阅读(867) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 冒泡排序 冒泡排序是大多数人学的第一种排序算法,在面试中,也是问的最多的一种,有时候还要求手写排序代码,因为比较简单。 冒泡排序属于交换类的排序算法。 一、算法介绍 现在有一堆乱序的数,比如 阅读全文
posted @ 2020-04-18 12:18 陈星星哦 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 归并排序 归并排序是一种分治策略的排序算法。它是一种比较特殊的排序算法,通过递归地先使每个子序列有序,再将两个有序的序列进行合并成一个有序的序列。 归并排序首先由著名的现代计算机之父John 阅读全文
posted @ 2020-04-18 12:16 陈星星哦 阅读(1017) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 哈希表:散列查找 一、线性查找 我们要通过一个键key来查找相应的值value。有一种最简单的方式,就是将键值对存放在链表里,然后遍历链表来查找是否存在key,存在则更新键对应的值,不存在则 阅读全文
posted @ 2020-04-18 12:13 陈星星哦 阅读(1326) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,并且称其为红黑树,因为左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学。在这里,我们区分开左倾红黑树和普通红黑树 阅读全文
posted @ 2020-04-18 12:12 陈星星哦 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 列表 一、列表 List 我们又经常听到列表 List数据结构,其实这只是更宏观的统称,表示存放数据的队列。 列表List:存放数据,数据按顺序排列,可以依次入队和出队,有序号关系,可以取出 阅读全文
posted @ 2020-04-18 12:11 陈星星哦 阅读(658) 评论(1) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 链表 讲数据结构就离不开讲链表。因为数据结构是用来组织数据的,如何将一个数据关联到另外一个数据呢?链表可以将数据和数据之间关联起来,从一个数据指向另外一个数据。 一、链表 定义: 链表由一个 阅读全文
posted @ 2020-04-18 12:10 陈星星哦 阅读(1213) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 算法复杂度主方法 有时候,我们要评估一个算法的复杂度,但是算法被分散为几个递归的子问题,这样评估起来很难,有一个数学公式可以很快地评估出来。 一、复杂度主方法 主方法,也可以叫主定理。对于那 阅读全文
posted @ 2020-04-18 12:09 陈星星哦 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 算法复杂度及渐进符号 一、算法复杂度 首先每个程序运行过程中,都要占用一定的计算机资源,比如内存,磁盘等,这些是空间,计算过程中需要判断,循环执行某些逻辑,周而反复,这些是时间。 那么一个算 阅读全文
posted @ 2020-04-18 12:07 陈星星哦 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 使用标准库 一、避免重复造轮子 官方提供了很多库给我们用,是封装好的轮子,比如包fmt,我们多次使用它来打印数据。 我们可以查看到其里面的实现: package fmt func Print 阅读全文
posted @ 2020-04-18 12:05 陈星星哦 阅读(1149) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 基础知识 学习数据结构和算法。我们要知道一些基础的知识。 一、什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等。在计算机科技里, 阅读全文
posted @ 2020-04-18 12:02 陈星星哦 阅读(748) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 分治法和递归 在计算机科学中,分治法是一种很重要的算法。 字面上的解释是分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题。 直到最后子问题可以简单的直接求解,原问题的解即子问 阅读全文
posted @ 2020-04-18 12:01 陈星星哦 阅读(830) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 常见数据结构及算法 数据结构主要用来组织数据,也作为数据的容器,载体。 各种各样的算法,都需要使用一定的数据结构来组织数据。 常见的典型数据结构有: 链表 栈和队列 树 图 上述可以延伸出各 阅读全文
posted @ 2020-04-18 11:59 陈星星哦 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 栈和队列 一、栈 Stack 和队列 Queue 我们日常生活中,都需要将物品排列,或者安排事情的先后顺序。更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了 阅读全文
posted @ 2020-04-18 11:57 陈星星哦 阅读(909) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 选择排序 选择排序,一般我们指的是简单选择排序,也可以叫直接选择排序,它不像冒泡排序一样相邻地交换元素,而是通过选择最小的元素,每轮迭代只需交换一次。虽然交换次数比冒泡少很多,但效率和冒泡排 阅读全文
posted @ 2020-04-18 11:56 陈星星哦 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 排序算法 人类的发展中,我们学会了计数,比如知道小明今天打猎的兔子的数量是多少。另外一方面,我们也需要判断,今天哪个人打猎打得多,我们需要比较。 所以,排序这个很自然的需求就出来了。比如小明 阅读全文
posted @ 2020-04-18 11:55 陈星星哦 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 希尔排序 1959 年一个叫Donald L. Shell (March 1, 1924 – November 2, 2015)的美国人在Communications of the ACM 阅读全文
posted @ 2020-04-18 11:54 陈星星哦 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 插入排序 插入排序,一般我们指的是简单插入排序,也可以叫直接插入排序。就是说,每次把一个数插到已经排好序的数列里面形成新的排好序的数列,以此反复。 插入排序属于插入类排序算法。 除了我以外, 阅读全文
posted @ 2020-04-18 11:53 陈星星哦 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 二叉查找树 二叉查找树,又叫二叉排序树,二叉搜索树,是一种有特定规则的二叉树,定义如下: 它是一颗二叉树,或者是空树。 左子树所有节点的值都小于它的根节点,右子树所有节点的值都大于它的根节点 阅读全文
posted @ 2020-04-18 11:52 陈星星哦 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。 快速排序 快速排序是一种分治策略的排序算法,是由英国计算机科学家Tony Hoare发明的, 该算法被发布在1961年的Communications of the ACM 国际计算机学会月刊 阅读全文
posted @ 2020-04-18 11:51 陈星星哦 阅读(1587) 评论(1) 推荐(0) 编辑