
算法与数据结构
文章平均质量分 65
ZeaLot4J
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对于线性时间筛选素数算法的理解
1. 算法描述线性筛选素数和其它的素数筛选方法比如Eratosthenes筛选都是一个思想,就是在已筛选出来的素数基础上按倍数把后面的合数去掉,但是由于多了下面这么一个判断一下子变成了线性时间复杂度。 if(i%prime[j]==0) break; 2. 算法实现#include <stdio.h> #define N 100000 /* 打出一张素数表和一张判断表 */ void primeT原创 2017-06-03 16:19:32 · 613 阅读 · 0 评论 -
理解红黑树(上)插入操作
1. 引言红黑树的结点增删改查效率非常优良,都为logn,其应用十分广泛: 1. Linux内核进程调度由红黑树管理进程控制块。 2. Epoll用红黑树管理事件块。 3. nginx服务器用红黑树管理定时器。 4. C++ STL中的map和set的底层实现为红黑树。 5. Java中的TreeMap和TreeSet由红黑树实现。 6. Java8开始,HashMap中,当原创 2017-11-12 20:39:32 · 615 阅读 · 4 评论 -
理解红黑树(下)删除操作
1. 引言红黑树的结点增删改查效率非常优良,都为logn,其应用十分广泛: 1. Linux内核进程调度由红黑树管理进程控制块。 2. Epoll用红黑树管理事件块。 3. nginx服务器用红黑树管理定时器。 4. C++ STL中的map和set的底层实现为红黑树。 5. Java中的TreeMap和TreeSet由红黑树实现。 6. Java8开始,HashMap中,当原创 2017-11-14 17:13:41 · 8940 阅读 · 16 评论 -
集合乱序算法shuffle
引言 最近在看underscore.js的源码,看到shuffle函数,想起Java集合工具中也有这么个函数,就顺便仔细研究了一下,思路非常简单:一个迭代下标i从后往前移动,每次取0~i之间的一个随机下标rand,将其对应元素和i所在的元素交换。i也可以从前往后迭代。underscore.js的shuffle_.shuffle = function(obj) { var set = isArr原创 2017-12-04 17:27:11 · 1726 阅读 · 0 评论