![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
BB-fat
追求源于热爱
展开
-
Golang实现下压栈
一、切片实现下压栈1.数据类型type Stack struct { stack []interface{}}以传统的面向对象思想为基本定义一个新的数据类型Stack,其中只有一个私有属性stack,它是一个接受任意类型数据的切片。go语言的接口类型使用起来很方便。2.构造函数func NewStack() Stack { ...原创 2019-08-26 15:27:30 · 241 阅读 · 0 评论 -
洗牌算法
算法介绍使用尽可能小的时间和空间,对一个数组进行随机乱序的操作。实现思路为了尽可能的节省内存,我选择在数组原地进行乱序随机的实现可以用时间作为种子生成随机数具体的实现思路很简单:首先在数组末尾设置一个指针hi,然后在0到hi之间随机一个索引,然后将这个索引指向的元素和hi交换,然后hi左移,往复上述操作,最终可以将数组完全打乱顺序。代码实现package shuffleim...原创 2019-08-28 15:44:09 · 249 阅读 · 0 评论 -
学习笔记——快速排序
算法介绍快速排序可能是应用最广泛的排序算法,它流行的原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快很多。快速排序是原地排序(只需要一个很小的栈)排序长度为N的数组所需的时间和NlgN成正比快速排序的内循环比大多数排序算法都要短小,这意味这它会更快快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立地排序。快速排序和归并排序是互补的:归并...原创 2019-08-28 15:43:41 · 580 阅读 · 0 评论 -
学习笔记——归并排序
算法介绍归并即将两个有序的数组归并成一个更大的有序数组。归并排序要将一个数组排序,可以先(递归)将它分成两半分别排序,然后将结果归并起来。简单归并排序创建一个适当大小的数组,然后将两个输入数组中的元素一个一个放入这个数组中。这种算法很容易实现,但是当数组比较大时,需要进行多次归并,每次归并都需要创建一个新的数组来储存结果,消耗的空间会非常大。原地归并仅靠在数组中移动元素,不使用...原创 2019-08-28 15:42:54 · 212 阅读 · 0 评论 -
学习笔记——初级排序算法
选择排序首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法叫做选择排序,因为它在不断地选择剩余元素之中的最小者。代码实现package selectionfunc Sort(a []int) { n := len(...原创 2019-08-26 15:36:28 · 143 阅读 · 0 评论 -
学习笔记——union-find算法
问题介绍union-find算法即连通性算法解决的是一个在很多领域广泛应用的问题,它被用来计算网络中各个触点之间的连通性。问题如下:问题的输入是一列整数对,其中每个整数都表示一个某种类型的对象,一对整数pq可以被理解为“p和q是相连的”。我们假设“相连”是一种等价关系,这也就意味着它具有:自反性:p和p是相连的;对称性:如果p和q是相连的,那么q和p也是相连的;传递性:如果p和q是相...原创 2019-08-26 15:31:13 · 236 阅读 · 0 评论 -
Golang简单记录程序运行时间
目标实现一个类,初始化后可以用它创建计时器,然后可以设置多个记录点,此过程可以类比短跑比赛的秒表用法,开始计时之后裁判每按动一次秒表就会记录下一组数据,最后可以查看全部选手的成绩。其中,每个计时器在创建时应被赋予一个字符串当作标示(名字),每个记录点也可以设置名字,计时器不能重名,但是记录点可以。有一个函数可以格式化输出单个计时器的全部记录点,也有函数可以输出全部计时器的全部记录点。本项目...原创 2019-08-26 15:30:32 · 2039 阅读 · 0 评论 -
Golang背包和迭代器的实现
数据结构和几个的基本APIpackage Bagtype Bag struct { first *node n int}type node struct { item interface{} next *node}func NewBag() Bag { return Bag{}}func (b Bag) IsEmpty() bool { return b...原创 2019-08-26 15:28:34 · 1410 阅读 · 0 评论 -
Golang实现先进先出队列
package Queuetype Queue struct { first *node last *node n int}type node struct { item interface{} next *node}func NewQueue() Queue { return Queue{}}func (q Queue) IsEmpty() bool ...原创 2019-08-26 15:28:03 · 1979 阅读 · 0 评论 -
学习笔记——优先队列和堆排序
优先队列优先队列是一种特殊的数据结构,它支持两种重要的操作:删除最大元素和插入元素。通过插入一系列元素然后一个一个删除,我们可以通过优先队列实现排序算法。APIAPI名称说明Insert(int)插入一个元素Max() int返回最大的元素DelMax() int弹出最大元素IsEmpty() bool返回队列是否为空Size() int...原创 2019-08-28 15:44:43 · 202 阅读 · 0 评论