数据结构与算法基础
longfulong
这个作者很懒,什么都没留下…
展开
-
查找(一)史上最简单清晰的红黑树讲解
我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然后按照指定的键来搜索并获取这些信息。键和值的具体意义取决于不同的应用。符号表中可能会保存很多键和很多信息,因此实现一张高效的符号表也是一项很有挑战性的任务。我们会用三种经典的数据类型来实现高效的符号表:二叉查找数、红黑树、散列表。转载 2017-12-09 17:25:36 · 252 阅读 · 0 评论 -
浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。转载 2017-12-06 21:56:17 · 461 阅读 · 0 评论 -
String hashCode() 设计的道理
那么为什么是乘31呢?这样有什么优点或者道理呢?转载 2017-12-06 21:44:36 · 323 阅读 · 0 评论 -
Nginx的负载均衡 - 一致性哈希 (Consistent Hash)
当后端是缓存服务器时,经常使用一致性哈希算法来进行负载均衡。使用一致性哈希的好处在于,增减集群的缓存服务器时,只有少量的缓存会失效,回源量较小。在nginx+ats / haproxy+squid等CDN架构中,nginx/haproxy所使用的负载均衡算法便是一致性哈希。转载 2017-12-06 21:25:01 · 499 阅读 · 0 评论 -
一致性哈希算法
出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。转载 2017-12-06 21:21:20 · 124 阅读 · 0 评论 -
两数相除求商,不能用乘法,除法,取模运算
问题描述:求商,不能用乘法,除法,取模运算。算法思路:不能用除法,那只能用减法,但是用减法,超时。可以用位移运算,每次除数左移,相当于2倍。转载 2017-12-04 23:35:14 · 1735 阅读 · 0 评论 -
数据结构与算法基础
说一下几种常见的排序算法和分别的复杂度。用Java写一个冒泡排序算法描述一下链式存储结构。如何遍历一棵二叉树?倒排一个LinkedList。用Java写一个递归遍历目录下面的所有文件。转载 2017-12-01 22:56:10 · 122 阅读 · 0 评论 -
几种常见排序算法
JAVA当中有以下几种常见排序算法:插入排序(直接插入排序、链表插入排序、分段/二分/折半插入排序、希尔排序/缩小增量排序)、冒泡排序、快速排序、简单选择排序、归并排序、二叉树排序、基数排序等。(1)复杂度比较表1 几种常见排序算法的复杂度算法名称平均情况最好情况最坏情况辅助空间直接插入排序O(n^2)O(n)O(n^2)O(1)希尔排序O(nlog2n)~ o(转载 2017-12-02 01:16:05 · 162 阅读 · 0 评论 -
Java之美[从菜鸟到高手演变]之HashMap、HashTable
Java之美[从菜鸟到高手演变]之HashMap、HashTable Java之美[从菜鸟到高手演变]之HashMap、HashTable 原创 2012年11月17日 23:00:57转载 2017-12-02 00:05:01 · 154 阅读 · 0 评论 -
白话解析:一致性哈希算法
在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点.转载 2017-12-08 22:50:16 · 315 阅读 · 0 评论 -
jdk1.8中ConcurrentHashMap的实现原理
并发环境下为什么使用ConcurrentHashMap1. HashMap在高并发的环境下,执行put操作会导致HashMap的Entry链表形成环形数据结构,从而导致Entry的next节点始终不为空,因此产生死循环获取Entry2. HashTable虽然是线程安全的,但是效率低下,当一个线程访问HashTable的同步方法时,其他线程如果也访问HashTable的同步方法,那么会进入阻塞或者轮转载 2017-12-09 17:50:58 · 2665 阅读 · 0 评论 -
HashMap1.8与HashMap1.6的不同
在JDK1.6中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。转载 2017-12-09 17:29:55 · 961 阅读 · 1 评论 -
查找(二)简单清晰的B树、Trie树详解
散列表散列表是普通数组概念的推广。由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置。在散列表中,不是直接把关键字作为数组的下标,而是根据关键字计算出相应的下标。使用散列的查找算法分为两步。第一步是用散列函数将被查找的键转化为数组的一个索引。转载 2017-12-09 17:27:03 · 151 阅读 · 0 评论 -
JAVA排序汇总
出处:http://blog.csdn.net/lenotang/article/details/3411346 package com.wepull.jbs.lesson4; import java.util.Random; /** * * 排序测试类 * * * * 排序算法的分类如下: * * 1.插入排序(直接转载 2017-12-16 22:55:22 · 147 阅读 · 0 评论