索引基础 索引介绍 定义 索引是满足某种特定查找算法的数据结构。这些数据结构会以某种方式指向数据,从而实现高效查找。 优势 提高了查询速度 劣势 降低更新表的速度,因为更新表时,MySQL不仅要保存数据,还要保存索引文件。 建立索引会占用磁盘空间的索引文件。 索引分类 主键索引 根据主键pk_col ...
分类:
数据库 时间:
2019-08-05 15:58:59
阅读次数:
139
二分查找 二分查找也叫折半查找。要求这个序列是有序序列。 二分查找的时间复杂度为O(logn),比顺序查找要快一些,比具体步骤如下: 1:找到序列的中点,比较目标数与序列中点对应的数的大小。 2:目标数大于序列中点对应的数,序列的起点变为原序列的中点加1一; 目标数小于序列中点对应的数,序列的终点变 ...
分类:
其他好文 时间:
2019-08-05 12:23:41
阅读次数:
128
斐波那契查找 斐波那契查找也是折半查找的一种改良版;斐波那契查找最主要的就是找mid这个点; 在该种查找算法中,我们要找的mid这个点为数组中的黄金分割点,要求黄金分割点 我们就要用到斐波那契数列了;我们可以看一下这个数列:1,1,2,3,5,8,13,21,34,55..........; 可以看 ...
分类:
其他好文 时间:
2019-08-05 12:17:09
阅读次数:
407
problem:https://leetcode.com/problems/snapshot-array/ 这道题暴力做(把所有快照都存下来)会超出空间限制,因此需要减少使用空间,两次快照直接没有改变的值就无需重复记录。可以使用二分搜索,每次修改值的时候记录一下当前快照的值,然后每次查找当前下标特定 ...
分类:
其他好文 时间:
2019-08-04 15:07:23
阅读次数:
166
介绍完数组和链表,以及两个特殊的线性结构栈和队列后,已经算是迈入了数据结构的门了,后面很多其他更复杂的数据结构都会基于数组和链表来实现,比如散列表、树、图等,有些甚至需要结合数组和链表来实现,在继续介绍后续复杂的数据结构之前,我们穿插进来一些常见的排序算法和查找算法,在系统介绍这些算法之前,我们先来 ...
分类:
其他好文 时间:
2019-08-03 13:02:19
阅读次数:
89
质因数分解的复杂是公认,这也是我们将他作为 RSA (一种广泛使用的公钥加密算法)的数学难题的原因。 $N=P Q$ (P、Q是质数),n = length of N in bit 对于这么一个N,我们因数分解得到结果的时间复杂度是 $2^n$ ,因为这个复杂,所以也有一堆的数学家在努力降低这个的时 ...
分类:
编程语言 时间:
2019-08-02 18:27:33
阅读次数:
150
problem:https://leetcode.com/problems/3sum-closest/ xxsum是一个系列的题了,一般有二分搜索和哈希两种方法,这道题要求的是接近值,所以哈希就不起作用了,只能使用二分搜索。 对于排好序的数组,首先确定三个数位置在中间的那个数字,然后在它左右搜索另外 ...
分类:
其他好文 时间:
2019-08-01 11:49:26
阅读次数:
96
problem:https://leetcode.com/problems/koko-eating-bananas/ 二分搜索的一个主要难点在于确定搜索的空间。比较容易有思路的问题类型是对于已经排好序的数组查找特定数据,使用下标作为二分的搜索对象即可。 另一种稍微有一点难度的是对所有可能的解在[mi ...
分类:
其他好文 时间:
2019-07-28 20:15:57
阅读次数:
122
重点 查找算法着重掌握:顺序查找、二分查找、哈希表查找、二叉排序树查找。 排序算法着重掌握:冒泡排序、插入排序、归并排序、快速排序。 顺序查找 算法说明 顺序查找适合于存储结构为顺序存储或链接存储的线性表。 算法思想 顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依 ...
分类:
编程语言 时间:
2019-07-28 13:46:10
阅读次数:
96
▎前置技能 二分(戳这里了解)和分治(戳这里了解)。 ▎前言 想必你已经学会了二分,但是你真的知道二分查找和二分答案的区别吗? ▎二分 ?『二分查找定义』 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键 ...
分类:
编程语言 时间:
2019-07-27 09:30:45
阅读次数:
126