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