算法简介 二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将 ...
分类:
编程语言 时间:
2020-05-11 23:43:48
阅读次数:
96
今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁盘碎片、内存碎片产生原理是类似的,这些存储碎片不仅占用了存储空间,而且降低了数据库运行的速度。如果发现索引中存在过多的存储碎片的话就要进行“碎片整 ...
分类:
其他好文 时间:
2020-05-11 23:34:39
阅读次数:
89
mysql的B+树索引 查找使用了二分查找,redis 跳表也使用了二分查找法,kafka查询消息日志也使用了二分查找法,二分查找法时间复杂度O(logn); 参考:redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 redis的跳表原理 时间复杂度O(logn)(阿里) 参 ...
分类:
其他好文 时间:
2020-05-11 01:34:25
阅读次数:
79
leetcode 4.[寻找两个有序数组的中位数] [寻找两个有序数组的中位数]: https://leetcode cn.com/problems/median of two sorted arrays/ leetcode 9.[回文数] [回文数]: https://leetcode cn.co ...
分类:
其他好文 时间:
2020-05-10 19:28:15
阅读次数:
73
前言 一个当时了解得相当晚的思想,乍一看好像和分治差不多味道,其实本质区别还是很大的。二分主要是用于二分查找和二分答案,这里还会提一下三分。 (总目录:https://www.cnblogs.com/jinkun113/p/12528423.html) 子目录列表 2.5 二分思想 1、二分与分治 ...
分类:
其他好文 时间:
2020-05-10 16:56:55
阅读次数:
53
题目描述 实现?int sqrt(int x)?函数。 计算并返回?x?的平方根,其中?x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例: 题目链接: https://leetcode cn.com/problems/sqrtx/ 思路1 在 1~x 范围内遍历, ...
分类:
其他好文 时间:
2020-05-09 13:05:49
阅读次数:
65
什么是广度优先搜索? 如果只是是背概念,幼儿园的小朋友都能背下来念给你听。 假设看这篇文章的都和我一样是个前端工程师,我们要从广度优先搜索(BFS)中学到什么?如果你看完这篇文章能够回答这个问题,那么你已经看懂了。 广度优先搜索不是排序算法,它和快速排序、选择排序、冒泡排序等不一样,你听过二分查找吗 ...
分类:
编程语言 时间:
2020-05-08 16:08:39
阅读次数:
69
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。 说明:不要使用任何内置的库函数,如 sqrt。 示例 1: 输入:16输出:True 示例 2: 输入:14输出:False 思路:二分查找,右边界初始为num/2。 1 bool isP ...
分类:
其他好文 时间:
2020-05-08 16:02:54
阅读次数:
72
简介 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 存储结构 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 源码分析 主要内部类 ...
分类:
其他好文 时间:
2020-05-06 21:47:19
阅读次数:
77
何为跳表? 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表详解 有序链表 考虑一个有序链表,我们要查找3、7、17这几个元素,我们只能从头开始遍 ...
分类:
其他好文 时间:
2020-05-06 13:52:50
阅读次数:
61