
算法学习
llayjun
努力奋斗!
展开
-
算法常见排序
参考自点击跳转转载 2021-07-16 09:56:32 · 201 阅读 · 0 评论 -
哈希表:如何利用好高效率查找的“利器”?
什么是哈希表哈希表名字源于 Hash,也可以叫作散列表。哈希表是一种特殊的数据结构,它与数组、链表以及树等我们之前学过的数据结构相比,有很明显的区别。哈希表的核心思想如果有一种方法,可以实现“地址 = f (关键字)”的映射关系,那么就可以快速完成基于数据的数值的查找了。这就是哈希表的核心思想。如何设计哈希函数我们先看一些常用的设计哈希函数的方法:第一,直接定制法哈希函数为关键字到地址的线性函数。如,H (key) = a*key + b。 这里,a 和 b 是设置好的常数。第二,数字原创 2021-01-08 16:13:28 · 421 阅读 · 0 评论 -
子串查找(字符串匹配)
子串查询首先,我们来定义两个概念,主串和模式串。我们在字符串 A 中查找字符串 B,则 A 就是主串,B 就是模式串。我们把主串的长度记为 n,模式串长度记为 m。由于是在主串中查找模式串,因此,主串的长度肯定比模式串长,n>m。因此,字符串匹配算法的时间复杂度就是 n 和 m 的函数。假设要从主串 s = “goodgoogle” 中找到 t = “google” 子串。根据我们的思考逻辑,则有:首先,我们从主串 s 第 1 位开始,判断 s 的第 1 个字符是否与 t 的第 1 个字.原创 2021-01-08 14:19:18 · 7856 阅读 · 0 评论 -
队列:先进先出的线性表,如何实现增删查?
队列是什么与栈相似,队列也是一种特殊的线性表,与线性表的不同之处也是体现在对数据的增和删的操作上。队列的特点是先进先出:先进,表示队列的数据新增操作只能在末端进行,不允许在队列的中间某个结点后新增数据;先出,队列的数据删除操作只能在始端进行,不允许在队列的中间某个结点后删除数据。也就是说队列的增和删的操作只能分别在这个队列的队尾和队头进行,如下图所示:与线性表、栈一样,队列也存在这两种存储方式,即顺序队列和链式队列:顺序队列,依赖数组来实现,其中的数据在内存中也是顺序存储。而链式队列,则依原创 2021-01-08 11:40:07 · 960 阅读 · 0 评论 -
限制后的线性表--栈
拉钩公瑾数据结构和算法课程笔记栈是什么栈是一种特殊的线性表。栈的数据结点必须后进先出。栈既然是线性表,那么它也包含了表头和表尾。不过在栈结构中,由于其操作的特殊性,会对表头和表尾的名字进行改造。表尾用来输入数据,通常也叫作栈顶(top);相应地,表头就是栈底(bottom)。栈顶和栈底是用来表示这个栈的两个指针。跟线性表一样,栈也有顺序表示和链式表示,分别称作顺序栈和链栈。栈的基本操作顺序栈链栈栈的案例例 1,给定一个只包括 ‘(’,’)’,’{’,’}’,’[原创 2020-12-31 17:24:28 · 127 阅读 · 0 评论 -
线性表
拉钩公瑾数据结构和算法课程笔记线性表概念:线性表是 n 个数据元素的有限序列,最常用的是链式表达,通常也叫作线性链表或者链表。在链表中存储的数据元素也叫作结点,一个结点存储的就是一条数据记录。每个结点的结构包括两个部分:第一是具体的数据值;第二是指向下一个结点的指针。链表改造单向链表单向循环链表双向链表双向循环链表增删查处理增加ss.next = p.next;p.next = s;删除bp.next = p.next.nex原创 2020-12-31 14:53:19 · 110 阅读 · 0 评论 -
java中选择排序,冒泡排序和二分法查找学习记录
选择排序,冒泡排序和二分法查找数据原创 2016-07-22 23:30:52 · 1581 阅读 · 0 评论