
数据结构
文章平均质量分 83
suxuefeng123
golang,docker,k8s,微服务,后端
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉搜索树,avl树,红黑树,B树,B+树介绍
数据结构原创 2022-06-08 17:30:59 · 675 阅读 · 0 评论 -
go语言数据结构第六篇-排序算法
一.冒泡排序 1.算法描述: (1)比较相邻的元素。如果左边大于右边,就交换他们两个。使得右边比左边大。这样一轮下来,最大的数就会在最右边了。 (2)因为最大的数已经在最右边了,因此对除了最右边的数重复(1)的步骤,这样倒数第二大的数也被选出来了。 (3)持续每次对越来越少的元素重复(2)的步骤,直到没有任何一对数字需要比较。 2.时间复杂度: O(n^2) 3...原创 2019-04-25 10:50:55 · 437 阅读 · 0 评论 -
Redis连接池的介绍与使用
一.介绍 说明:通过golang对redis操作,还可以通过redis连接池,流程如下: 事先初始化一定数量的连接,放入到连接池。 当go需要操作redis时,直接从redis连接池取出连接即可。 这样可以节省临时获取redis连接的时间,从而提高效率。 二.核心代码: var pool *redis.Pool pool =&redis.Pool{ MaxIdle:8,/...原创 2019-04-29 14:55:46 · 14133 阅读 · 0 评论 -
go如何操作redis数据库
一.安装第三方开源redis库。在GOPATH路径下执行安装命令: $go get github.com/garyburd/redigo/redis 二. Set/Get接口(通过golang添加和获取key-value) package main import ( "fmt" "github.com/garyburd/redigo/redis" ) //通过go...原创 2019-04-29 14:09:53 · 834 阅读 · 0 评论 -
go语言数据结构第十篇-二叉树
二叉树的概念 树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。这里主要讲讲二叉树的前序遍历,中序遍历和后序遍历。 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍历:左子树->右子树->根节点 案例 使用前序,中序,后序对下面的二叉树进行遍历。 完整代码实现: package main imp...翻译 2019-04-27 19:21:46 · 499 阅读 · 0 评论 -
go语言数据结构第九篇-哈希表(散列)
概念 哈希表是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做哈希表。 实际需求 google公司的一个上机题:基于哈希表的员工管理系统 有一个公司,当有新员工来报道时,要求将该员工的信息加入(id,名字),当输入该员工的id时,要求查找到该员工的所有信息。...翻译 2019-04-26 22:37:59 · 1977 阅读 · 0 评论 -
go语言数据结构第八篇-递归
(一)递归的概念 就是函数/方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 (二)递归用于解决什么样的问题? 各种数学问题如:八皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题 用栈解决的问题(用递归会使代码简洁) (三)递归需要遵守的重要原则 执行一个函数时,就创建一个新的受保护的独立空间(新函数栈) 函数的局...翻译 2019-04-26 21:11:04 · 358 阅读 · 0 评论 -
go语言数据结构第七篇-栈
(一)栈介绍 栈是一个先入后出的有序列表 栈是插入和删除只能在同一端进行的一种特殊线性表,允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。 根据栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶。 (二)栈的应用场景 子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完毕后再将地址取出,回到原来的程序中。 处理递归调用:和子...翻译 2019-04-26 17:24:11 · 469 阅读 · 0 评论 -
go语言数据结构第五篇-链表(单向环形链表)
单向环形链表应用场景 约瑟夫问题: 设编号为1,2,3,....,n的n个人围做一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,以此类推,直到所有人出列为止,由此产生一个出队编号的序列。 思路:用一个不带头节点的单向环形链表,先构成一个有n个节点的单向循环链表,然后由k节点起从1开始计数,将计到m的那个节点...翻译 2019-04-21 20:33:43 · 452 阅读 · 0 评论 -
go语言数据结构第四篇-链表(双链表)
双向链表的应用实例 使用带head头的双向链表实现水浒英雄排行榜管理 单向链表的缺点分析: (1)单向链表查找的方向只能是一个方向,而双向链表可以向前或者向后查找。 (2)单向链表不能自我删除,所以前面我们单链表删除节点时,总是找到temp的下一个节点来删除的。 代码如下: package main import ( "fmt" ) //定义一个HeroNode type her...翻译 2019-04-21 16:21:43 · 141 阅读 · 0 评论 -
go语言数据结构第三篇-链表(单链表)
单链表的应用实例 使用带head头的单向链表实现水浒英雄排行榜管理 (1)完成对英雄人物的增加,删除,显示操作 (2)第一种方法在添加英雄时,直接添加到链表的尾部(即链表实现队列) (3)第二种方法在添加英雄时,根据排名将英雄插入到指定位置(如果排名已经存在,则显示添加失败) 下图是第二种添加方法的解释说明 第一种方法是InsertHeroNode(),第二种方法是InsertH...翻译 2019-04-21 15:23:17 · 235 阅读 · 0 评论 -
go语言数据结构第二篇-队列
队列介绍 队列是一个有序列表,可以用数组或是链表来实现 遵循先入先出的原则,即:先存入队列的数据,要先取出。后存入的要后取出 数组模拟单向队列 maxsize是该队列的最大容量,front随着数据的输出而改变,rear随着数据的输入而改变, 这里front=-1,rear=2,当存入数据时,rear=maxsize-1,队列刚好满 思路: 单向数组队列: pa...翻译 2019-04-21 11:07:46 · 495 阅读 · 0 评论 -
go语言数据结构第一篇-稀疏数组
使用稀疏数组存储能大大节省磁盘空间,代码如下: package main import ( "bufio" "fmt" "log" "os" "strconv" "strings" ) type nodeval struct { row int col int val interface{} } //根据本地data文件还原成原始数据 func ReadData(...翻译 2019-04-20 20:37:14 · 372 阅读 · 0 评论