go
文章平均质量分 61
小圣.
这个作者很懒,什么都没留下…
展开
-
Go语言数据结构与算法—哈希表
1. 概述哈希表(Hash table),也称为散列表。是根据关键码值而直接进行访问的数据结构。也就是说,它通过关键码值映射到表中一个位置来访问记录,以加快查找的速度。可以用取快递做一个例子:哈希表相当于快递柜,而关键码值就相当于取件码。通过取件码可以很快的找到自己的快递。1.1 术语散列方法:选取某个函数,以该函数按关键字计算元素的存储位置,并按此存放。散列函数(哈希函数):散列方法中使用的转换函数。散列表:按散列方法构造的表就是散列表。冲突:不同关键码映射到同一个散列地址。同义词:具有原创 2021-10-22 11:30:22 · 297 阅读 · 0 评论 -
Go语言数据结构与算法—栈
概述栈(stack)是一种先进后出(First In Last Out, FILO)的特殊线性表,其插入和删除操作只允许在线性表的一段进行。允许操作的一端称为栈顶(top),不允许操作的一端称为栈底(bottom)。栈中插入元素的操作称为入栈(push),删除元素的操作称为出栈(pop)。常用的应用场景:子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中处理递归调用:和子程序的调用类似,只是除了存储下一个指令的地址外,也将参数、区域变量原创 2021-10-21 16:59:59 · 310 阅读 · 0 评论 -
Go语言数据结构与算法—常用排序算法
概述所谓的排序算法,就是通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律。因此,经过处理后的数据便于筛选和计算,大大提升了计算效率。分类插入排序插入排序(insertion sort)算法的思路是:每次将一个元素,按其关键字值的大小,插入前面已经排序的子序列,以此重复,直达插入全部元素。插入排序算法有:直接插入排序、二分插入排序、希尔排序交换排序交换排序算法的思路是:比较两个元素大小,如果反序,则交换交换排序算法有:冒泡排序、快速排序原创 2021-10-21 16:01:55 · 248 阅读 · 0 评论 -
Go数据结构与算法—链表
介绍链表是一种物理存储单元上的非连续、非顺序的存储结构。链表由一系列节点(链表中的每一个元素)组成。节点可以在运行时动态生成。每个节点包括两个部分:存储数据元素的数据域、存储下一个节点的指针域。 相比于线性表的顺序结构,链表操作复杂。但是由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。单链表type HeroNode struct {原创 2021-10-17 16:45:00 · 143 阅读 · 0 评论 -
Go数据结构与算法—队列
介绍队列(queue),是一种特殊的线性表。队列只允许在一端插入数据,另一端取出数据,并且队列中的数据遵循先进先出(First In First Our, FIFO)的规则。其中取出数据的一端称为队头,插入数据的一端称为队尾。队列可以分为:顺序队列、循环队列、链式队列。顺序队列type Queue struct { MaxSize int Front int Rear int Element []int}// 初始化队列func (q *Queue) initQueue(m原创 2021-10-16 00:20:05 · 495 阅读 · 0 评论 -
Go语言数据结构—稀疏数组
介绍如果一个数组中非零个数远远小于数组元素个数,且非零元素分布没有规律,当这样的数组进行存储时,因为很多元素都是为0的,直接存储的话,会浪费掉很多空间。这时候可以数组转化为稀疏数组,然后进行存储。那么怎么进行转换呢? {0, 1, 0, 0, 0}, {1, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 1}, 以行上面这个数组为例: 1. 首先记录数组的行、列、几个非零的元素(row、col、value)原创 2021-10-14 14:00:08 · 140 阅读 · 0 评论