- 博客(6)
- 资源 (5)
- 收藏
- 关注
原创 快速选择算法 查找数组中第个最小元素(元素不重复)
修改快速排序算法以解决选择问题,步骤如下: (1)若数组S中只有一个元素,则返回次元素。 (2)在S中选取元素v作为枢纽. (3)将集合S-{v} 分割成两个集合S1和S2。 (4)若k|S1|+1,则枢纽元为要找的元素。否则第k个元素在S2中,它是S2中第K-|S1|-1个最小元,即quickSelect(S2,K-|S1|-1)。 代码如下: public class Kto
2015-05-31 14:17:42 479
原创 快速排序
1.快速排序的基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 对数组s 进行快速排序的步骤如下 (1)如果s中元素的个数为0或1,则返回。 (2)取s中任一元素v作为枢纽元(pivot)。 (3)将剩余的元素s-{v} 划分
2015-05-30 15:48:25 323
原创 希尔排序
希尔排序实质上分组的插入排序,利用“增量”将待排数据分为若干个组,分别对这些组进行插入排序,然后“增量”减小,再分组,再排序,直至“增量”为1,所有数据为一组,此时这些数据大部分都已有序,进行插入排序效率较高。 如图:当增量为5时,分组情况为(81,35,41),(94,17,75),(11,95,15),(86,28),(12) 分别对每组插入排序。排序后,各组内部是有序的。然后减为
2015-05-13 14:23:05 379
原创 Google面试题 多线程写文件
有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式: A:1 2 3 4 1 2.... B:2 3 4 1 2 3.... C:3 4 1 2 3 4.... D:4 1 2 3 4 1.... 请设计程序。 程序: 思路: 观察文件内容可
2015-05-12 21:05:47 492
原创 CopyOnWriteArrayList 源码分析
1.CopyOnWriteArrayList 是线程安全的ArrayList,适用于保存的数据量不大,读操作远多于写操作,对实时性要求不高的场景。CopyOnWriteArrayList 对读操作不同步,对写操作同步。在进行写操作时,会对共享变量进行COPY,在副本上进行更新,然后将更新好的副本替换掉原来的共享变量。写操作开销比较大。由于读操作不需同步,所以在某线程进行写操作时,其他线程可以进行读
2015-05-08 16:17:35 407
原创 LinkedBlockingQueue 源码学习
LinkedBlockingQueue是一个由单向链表实现的阻塞队列,该队列按照先进先出的原则对元素进行排序。队尾插入元素,对头删除元素。在构造LinkedBlockingQueue时可以指定容量大小,若未指定元素,则容量大小为Integer.MAX_VALUE. 1.以下为LinkedBlockingQueue的属性 static class Node {//链表中节点的定义
2015-05-07 16:53:14 435
编译原理课设 词法分析器
2011-06-18
数据结构各章习题与答案(严蔚敏版—清华大学出版)
2010-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人