算法
豆腐花发
哦呜
展开
-
topk算法
从1一个数中,取出前100个最大数。 最小堆排序。 1.首先读入前100个数,用最小堆排序,时间复杂度为O(klogk)(k为数组的大小即为100)。 2.然后遍历后续的数字,并于堆顶(最小)数字进行比较。如果比最小的数小,则继续读取后续数字;如果比堆顶数字大,则替换堆顶元素并重新调整堆为最小堆。整个过程直至1亿个数全部遍历完为止。 该算法的时间复杂度为O(nklogk),空间复杂度是100(常数)。 ...原创 2020-08-06 22:02:17 · 385 阅读 · 0 评论 -
十大排序算法
快速排序 分支算法,递归实现. 算法如下: 1.选取第一个元素作为基准值, 2.所有元素小于基准值的都排到基准值前面,所有元素大于基准值的都排到基准值后面. 3.递归排序前半数组,和后半数组 package com.study.demo; import java.util.Arrays; /** * @author: 李坡 * @date: 2019/2/2 21:59 */ publi...原创 2019-02-11 22:44:58 · 143 阅读 · 0 评论 -
一致性hash
一致性hash算法 先构造一个长度为2^32的整数环(这个环被称为一致性Hash环),根据节点名称的Hash值(其分布为[0, 232-1])将服务器节点放置在这个Hash环上,然后根据数据的Key值计算得到其Hash值(其分布也为[0, 232-1]),接着在Hash环上顺时针查找距离这个Key值的Hash值最近的服务器节点,完成Key到服务器的映射查找。 这种算法解决了普通余数Hash算法伸缩...原创 2019-02-20 22:36:21 · 366 阅读 · 0 评论 -
红黑树
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性: (1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色。 (3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] (4)如果一个节点是红色的,则它的子节...原创 2019-04-03 14:49:17 · 107 阅读 · 0 评论 -
二叉排序树
二叉排序树BST,又叫二叉搜索树 或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; 二分查找,时间log2n 优化方式有 Size Balanced Tree(SBT) AVL树 红黑树 Treap(Tree+Heap) 这些均可以使...原创 2019-04-03 15:21:10 · 113 阅读 · 0 评论 -
平衡二叉树
平衡二叉树是由前苏联的两位数学家G.M.Adelse-Velskil和E.M.Landis提出,因此一般也称作AVL树,AVL树本质还是一棵二叉查找树,只是在其基础上增加了“平衡”的要求。所谓平衡是指,对AVL树的任意结点来说,其左子树与右子树的高度之差的绝对值不超过1,其中左子树与右子树的高度因子之差称为平衡因子。 如下所示,就是一棵由{1,2,3,4,5,7,8}构建的AVL树: 只要能随时...原创 2019-04-03 15:26:57 · 117 阅读 · 0 评论 -
hash算法
就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解...原创 2019-05-05 15:06:04 · 132 阅读 · 0 评论