- 博客(13)
- 资源 (12)
- 收藏
- 关注
原创 合并排序(MergeSort)
public class MergeSortDemo { public static void mergeSort(int[] data) { if (null == data || data.length == 0) { return; } mergeSort(data, 0, data.length - 1);
2014-01-29 08:59:18 1431
原创 堆排序(Heap Sort)原理及Java实现
先看看堆(Heap)的概念:对于集合元素 R = { k1 , k2 , k3 , ... kn };如果满足1:Ri >= R2i ;其中(2i 2: Ri >= R2i+1 ; 其中(2i+1 或满足1:Ri =2: Ri =称为称为该序列是一个堆(最大堆 或 最小堆)。堆排序的思想是对堆中的第一个元素和最
2014-01-23 22:46:14 2720 1
原创 选择排序(Selection Sort)原理及Java实现
选择排序(Selection Sort )分为两种 简单选择排序(Simple Selection Sort) 和树形选择排序。简单选择排序(Simple Selection Sort):简单选择排序类似于冒泡排序(Bubble Sort) ,每次都会在剩下的元素集合中选择出一个最值出来填充到当前位置。唯一的区别是,冒泡排序在每次发现比当前值小于(或大于)时,都会交换元素的位置,
2014-01-16 09:10:01 3013
原创 快速排序(QuickSort)原理及Java 实现
快速排序(QuickSort )是常用到的效率比较高的一种排序算法,在面试过程中也经常提及。下面就详细讲解一下他的原理、给出一个Java版本的实现。快速排序思想:通过对数据元素集合Rn 进行一趟排序划分出独立的两个部分。其中一个部分的关键字比另一部分的关键字小。然后再分别对两个部分的关键字进行一趟排序,直到独立的元素只有一个,此时整个元素集合有序。快速排序的过程——挖坑
2014-01-15 09:14:45 10459 1
原创 冒泡排序(Bubble Sort)原理及Java实现
冒泡排序 (Bubble Sort) 算法是一种基于交换的排序算法,其思想是,依次比较相邻元素的大小,如果反序,则进行交换,然后再进行下一次排序——如果数据集合的长度为n ,则下一次对前n-1的数据进行冒泡排序。 比如: 第一趟排序 :R1 和R2 比较, R2 和 R3 比较 .... Rn-1 和Rn 比较。得到最大值或最小值Rn 第二趟排序: R1 和R2 比较, R2 和 R
2014-01-14 08:44:14 1954
原创 希尔排序(Shell Sort)
希尔排序的原理:将待排序数据元素集合按照一定的大小分块在块间的数据按照增量(步长)进行直接插入排序,然后根据一定的规则减少步长,再进行一次直接插入排序,直到步长小于1 。希尔排序需要注意的是最后的增量一定是1 。下面先给出Java实现代码:public static void shellSort(int array[]) { if (null == array || 1
2014-01-13 22:26:38 1171
原创 直接插入排序(Straight Insertion Sort)
写排序方法之前还是先介绍一下排序相关的概念:排序:将任一资源(内存中的数据或文件等等)通过某种方式整理成 按关键字 有序排列的过程 叫排序。排序的稳定性: 对序列中的两个或两个以上的相等的数据(Ri = Rj , i != j), 排序前 Ri 先于 Rj , 排序后Ri 仍然先于 Rj ,则称该排序是稳定的。否则称为该排序是不稳定的。比较算法的评判标准: 时间复杂度、控件复杂度、算法
2014-01-13 08:54:37 1104
原创 查找之四 , fibonacci 查找
Fibonacci 查找的方法是根据Fibonacci 数列的特点对查找表进行分割。其查找表有一个特点就是: 查找表的长度等于某个Fibonacci 数值减 1 。即:n = table.length , fn = fib(k) ; n = fn -1 ;如果不满足这个条件,则不能使用Fibonacci 查找方法进行查找。使用 l , h , m ,表示待查找表的下界、上界 、 和
2014-01-09 22:34:08 1356
原创 查找之三 , 块查找
分块查找又称为索引查找,它结合顺序查找和二分查找方法。在分块查找中我们首先需要知道查找表的构造,而查找表构造的要求如下:1、将查找表分块,块与块之间是有序的,而块内无序。即第 i 块内的最大值,小于等于第 i + 1块的最小值。2、根据查找表构造一个索引表 , 索引表的结构是按照关键字有序的。索引表中每个Item的结构如下:最大关键字起始位置
2014-01-08 22:24:13 1018
原创 查找之二 , 二分查找
二分查找的思想是:对一个非空的有序的查找表进行如下比较(以下假设是升序排列):查找找表的低位 low , 高位 high ,如果 middle = (low + high) / 2 的值等于key值,则查找成功;如果 middle的值小于key的值,说明key可能在后半段,low=middle ;如果 middle的值大于key的值, 说明key可能在前半段, high = low
2014-01-07 21:34:34 1134
原创 查找之一 , 顺序查找
在写顺序查找之前呢,先介绍几个概念:1、 查找表 :相同类型的数据元素组成的集合。2、 关键字: 数据元素中能够唯一标示数据元素的项(一项或多项)。3、 查找 : 根据给定的key(关键字)值,查找某一数据元素,如果存在满足条件的数据元素则查找成功,否则查找失败。如果查找成功,一般返回该数据元素所在的位置。4、 静态查找: 查找时只对数据元素进行查询或检索。5、动态查找:
2014-01-06 21:53:13 1144
原创 广义表操作 (Java实现)——广义表深度、广义表长度、打印广义表信息
广义表是对线性表的扩展——线性表存储的所有的数据都是原子的(一个数或者不可分割的结构),且所有的数据类型相同。而广义表是允许线性表容纳自身结构的数据结构。广义表定义: 广义表是由n个元素组成的序列:LS = (a1,a2, ... an);其中 ai是一个原子项或者是一个广义表。n是广义表的长度。若ai是广义表,则称为LS的子表。广义表表头和表尾: 若广义表LS不空,则a1
2014-01-06 09:03:10 4953 1
原创 字符串匹配算法——KMP && BF
字符串匹配操作定义:目标串S="S0S1S2...Sn-1" , 模式串T=“T0T1T2...Tm-1”对合法位置 01、S[i ... i+m-1] = T[0 ... m-1] , 则从位置i开始匹配成功,称模式串 T 在目标串 S 中出现。2、S[i ... i+m-1] !=
2014-01-02 08:57:25 1497
RecyclerView辅助工具
2015-12-09
android控件学习示例
2013-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人