算法
武汉红喜
专注于消息中间件
展开
-
java排序算法
本文转载自http://shift-alt-ctrl.iteye.com/blog/1888827 (laoda.toutiao.im) 一.冒泡排序特点:实现简单,无额外空间消耗,速度较慢,适合数据较少的场景,复杂度为O(N^2)思路:每一轮比较都从头开始,然后两两比较,如果左值比右值大,则交换位置,每一轮结束后,当前轮"最后一个元素"必将是最大的.原创 2017-01-16 23:02:55 · 261 阅读 · 0 评论 -
真正统治世界的十大算法
英文原文:The real 10 algorithms that dominate our world 不久前的某一天,我在浏览Reddit发现了一篇有趣的文章《统治世界的十大算法》,作者George Dvorsky在那篇文章中试图解释算法之于当今世界的重要性,以及哪些算法对人类文明最为重要。 此时此刻,如果你已经学过算法的话,那么在你阅读那篇文章时,你脑海中所浮现的第一件事也许是“作者是否明...原创 2017-01-16 19:02:21 · 743 阅读 · 0 评论 -
Java最小堆解决TopK问题
其实我们与大数据并不遥远,比如要从海量数据中按大小或频率挑出top k,假定机器是多核的内存有限的,我们采用多线程分块处理数据,最后合并处理。那么,处理每一块数据的top k(i)可以采用哪些算法呢? TopK问题是指从大量数据(源数据)中获取最大(或最小)的K个数据。TopK问题是个很常见的问题:例如学校要从全校学生中找到成绩最高的500名学生,再例如某搜索引擎要统计每天的10...原创 2018-03-09 17:41:11 · 230 阅读 · 0 评论 -
Java实现二分查找算法
Java程序员总该玩点基本的算法。1、前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序2、原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。可能描述得不是...原创 2018-03-09 17:42:10 · 159 阅读 · 0 评论 -
算法如何开窍
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{ public static void main(String args[])...原创 2018-03-09 17:40:47 · 353 阅读 · 0 评论 -
缓存算法(内存回收算法)- LRU、FIFO、LFU
题目链接:https://oj.leetcode.com/problems/lru-cache/ Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get ...原创 2018-03-09 17:46:06 · 1378 阅读 · 0 评论 -
将redis当做使用LRU算法的缓存来使用
当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。 LRU是Redis唯一支持的回收方法。本页面包括一些常规话题,Redis的maxmemory指令用于将可用内存限制成一个固定大小,还包括了Redis使用的LRU算法,这个实际上只是近似的LR...原创 2018-03-09 17:48:06 · 527 阅读 · 0 评论 -
链表反转
链表的反转是常见的面试题目。本文总结了2种方法。1 定义单链表node的数据结构定义如下:class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; }}2 方法1:就地反转法2.1 思路把当前链表的...原创 2018-03-09 17:49:04 · 203 阅读 · 0 评论 -
代码面试最常用的10大算法
摘要:面试也是一门学问,在面试之前做好充分的准备则是成功的必须条件,而程序员在代码面试时,常会遇到编写算法的相关问题,比如排序、二叉树遍历等等。在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序、二叉树查找等等。本文总结了程序员在代码面试中最常遇到的10大算法类型,想要真正了解这些算法的原理,还需程序员们花些功夫转载 2017-01-17 20:32:50 · 312 阅读 · 0 评论 -
【转载】相对平均分布
本文转载自http://shift-alt-ctrl.iteye.com/blog/1961598 有一个项目用来负责调度集群中的"cron任务",比如一个application中可以配置N个定时任务,这些任务信息最终注册到zookeeper上,并开发了一系列代码用于维护这些任务的"活性";当applicaton中一个server故障,那么这个server上接管的任务,需要迁移到其他ser原创 2016-01-22 09:45:00 · 503 阅读 · 0 评论 -
【转载】一致性hash算法与server列表维护(备忘)
普通的hash算法有个很大的问题:当hash的"模数"发生变化时,整个hash数据结构就需要重新hash,重新hash之后的数据分布一定会和hash之前的不同;在很多场景下,"模数"的变化时必然的,但是这种"数据分布"的巨大变化却会带来一些麻烦.所以,就有了"一致性hash",当然学术界对"一致性hash"的阐述,还远远不止这些. 在编程应用方面,最直观的例子就是"分布式缓存",一个原创 2016-01-22 09:45:06 · 381 阅读 · 0 评论