【信奥赛之路 2】-- 算法基础
文章平均质量分 84
快速排序、
小凡学编程
目前从事少儿编程培训工作|专注青少年编程知识传播|有多年python后端开发 爬虫开发经验
展开
-
数据结构--哈希表(Hash Table)
本文讲解了一些比较基础、偏理论的哈希表知识。包含哈希表的定义,哈希函数、哈希冲突以及哈希冲突的解决方法。哈希表(Hash Table):通过键 key 和一个映射函数 Hash(key) 计算出对应的值 value,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。哈希函数(Hash Function):将哈希表中元素的关键键值映射为元素存储位置的函数。哈希冲突(Hash Collision):不同的关键字通过同一个哈希函数可能得到同一哈希地址。「哈希函数的构建」和「哈希冲突的解决方法」。原创 2023-10-16 11:47:01 · 486 阅读 · 0 评论 -
数据结构--堆
堆(heap):一种有特殊用途的数据结构——用来在一组变化频繁(发生增删查改的频率较高)的数据集中查找最值。堆在物理层面上,表现为一组连续的数组区间:long[] array;将整个数组看作是堆。堆在逻辑结构上,一般被视为是一颗完全二叉树。满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆;反之,则是小堆,或者小根堆,或者最小堆。当一个堆为大堆时,它的每一棵子树都是大堆。原创 2023-10-16 10:54:19 · 428 阅读 · 0 评论 -
数据结构--并查集
并查集原创 2023-10-01 11:07:47 · 276 阅读 · 0 评论 -
数据结构--Trie字符串统计
Trie字符串统计原创 2023-09-30 16:28:11 · 295 阅读 · 0 评论 -
基础算法--KMP字符串
kmp字符串,匹配字符串原创 2023-09-29 10:35:53 · 123 阅读 · 0 评论 -
数据结构--队列
这个时候我们想往队列里继续添加元素,尾指针后移,然后发现出现了假溢出的情况,因为尾指针无法再向后移动,而队列实际上并没有满,我们又无法继续往队列里添加数据。:尾指针在指向下表为最后一个元素时,再添加元素,如果还有空位,就将尾指针重新指向0,头指针在取到下表数组末尾时,如果前面还有元素,头指针也指向0,这就是我们说的环形队列。初始化一个大小固定的数组,并将头指针,尾指针都指向下表为0的位置,但其实这种初始化头指针指向的是队首,尾指针指向的是队尾的后一个元素。往队列里添加元素,尾指针后移一位。原创 2023-09-27 12:57:12 · 275 阅读 · 0 评论 -
数据结构--栈
只能在一端插入元素(栈顶),也只能从这一端取出元素(栈顶)原创 2023-09-27 10:14:37 · 325 阅读 · 0 评论 -
数据结构--双链表
双链表数组模拟实现原创 2023-09-26 17:18:53 · 201 阅读 · 0 评论 -
数据结构--单链表
我们都知道链表的一般模式是由结构体加指针来实现的,但是在。原创 2023-09-26 15:18:16 · 172 阅读 · 0 评论 -
基础算法--区间合并
区间合并原创 2023-09-25 10:09:12 · 237 阅读 · 0 评论 -
基础算法--离散化
离散化:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。适用范围:数组中元素值域很大,但个数不是很多。比如将a[]=[1,3,100,2000,500000]映射到[0,1,2,3,4]这个过程就叫离散化。离散化常与差分、前缀和、数组数组、线段树结合考查。原创 2023-09-22 11:27:42 · 512 阅读 · 0 评论 -
基础算法--位运算
:代表n右移k位 比如 000011 >> 1 = 000001 前面会补零(所以第几位是从0开始计算):表示最后一位是否为1比如: 而 则 为0001可以用来判断最后一位是否为1lowbit操作,树状数组的基本操作: 最右边的一位1。返回的是一个二进制数,返回最高位的一位1就是最后一位1例如:x=1010,;x=101000,。lowbot实现:就是 x & -x,那么它为什么能返回最后一位1呢?C++中一个数的负数是原码的补码(取反+1), -x = ~x + 1(负数x是在其负数补码原创 2023-09-22 11:04:43 · 218 阅读 · 0 评论 -
基础算法--双指针算法
严格的来说,双指针只能说是是算法中的一种技巧。双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。最常见的双指针算法有两种:一种是,在一个序列里边,用两个指针维护一段区间;另一种是,在两个序列里边,一个指针指向其中一个序列,另外一个指针指向另外一个序列,来维护某种次序。原创 2023-09-20 10:50:40 · 114 阅读 · 0 评论 -
基础算法--前缀和与差分
前缀和与差分原创 2023-09-15 13:04:48 · 165 阅读 · 0 评论 -
基础算法--高精度(加减乘除)
高精度(加减乘除)算法原创 2023-09-12 08:47:20 · 148 阅读 · 0 评论 -
基础算法--理解递归
理解递归原创 2023-09-08 16:05:57 · 167 阅读 · 0 评论 -
基础算法--二分查找
故事分享🏬:有一天小明到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把小明拦下,要检查一下哪本书没有登记出借。小明正准备把每一本书在报警器下过一下,以找出引发警报的书,但是保安露出不屑的眼神:你连二分查找都不会吗?于是保安把书分成两堆,>让第一堆过一下报警器,报警器响;于是再把这堆书分成两堆…… 最终,检测了 logN 次之后,保安成功的找到了那本引起警报的书,露出了得意和嘲讽的笑容。于是小明背着剩下的书走了。从此,图书馆丢了 N - 1 本书。原创 2023-09-06 13:41:15 · 135 阅读 · 0 评论 -
基础算法--归并排序
基础算法--归并排序原创 2023-09-05 23:02:22 · 101 阅读 · 0 评论 -
基础算法--快速排序
快速排序原创 2023-09-03 14:56:34 · 466 阅读 · 0 评论