摘要: package kpp.base;/** * 求两个有序数组的中位数 * 此代码适用于两个数组长度不等的情况:长度不等的情况下,两个数组分别从相反方向去掉元素,且去掉的元素个数相同 * @author kpp * */public class TwoArrayMedian { public s... 阅读全文
posted @ 2015-03-31 22:49 kpp 阅读(337) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/wangaohui/archive/2012/12/16/2820974.html 阅读全文
posted @ 2015-03-31 17:00 kpp 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 如图所示的二叉排序树查找成功的平均查找长度为:∑(本层高度*本层元素个数)/节点总数=(1*1+2*2+3*3+3*4)/9查找不成功的平均查找长度:∑(本层高度*本层补上的叶子个数)/补上的叶子总数=(2*1+3*3+4*6)/10 阅读全文
posted @ 2015-03-31 16:43 kpp 阅读(16422) 评论(0) 推荐(2) 编辑
摘要: http://blog.csdn.net/lcore/article/details/8892648 阅读全文
posted @ 2015-03-31 16:08 kpp 阅读(170) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/lcore/article/details/8889176 阅读全文
posted @ 2015-03-31 16:07 kpp 阅读(117) 评论(0) 推荐(0) 编辑
摘要: package kpp.search;/** * 二分查找 * 针对有序序列 * @author kpp * */public class BinarySearch { public static void main(String[] args) { // TODO Auto-g... 阅读全文
posted @ 2015-03-31 11:30 kpp 阅读(184) 评论(0) 推荐(0) 编辑
摘要: /** * 顺序查找,设置哨兵 * 待查找数组:a[n] * 待查找元素:key * * 方法: * b[n+1],其中,b[0]存放key,b[1]至b[n]存放a[0]至a[n-1]的元素 * 将b[n]从后向前扫描,如果查找成功,返回元素在数组b中的下标,从1开始;如果查找失败,返回0 * ... 阅读全文
posted @ 2015-03-31 11:09 kpp 阅读(820) 评论(0) 推荐(0) 编辑
摘要: package kpp.sort;/** * 快速排序 * 一般选取首元素为枢轴元素,保存至pivot,确定头尾指针left,right, * 先对整个数组元素进行排序,此时枢轴元素两侧元素有序,再分别对枢轴元素两侧的两个数组执行排序 * 排序规则 * 1.right指针从右向左遍历,如果比当前枢轴... 阅读全文
posted @ 2015-03-30 20:39 kpp 阅读(203) 评论(0) 推荐(0) 编辑
摘要: package kpp.sort;/** * 堆的定义如下: n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。 " ki=k2i,ki>=k2i+1.(i=1,2,…,[n/2])" 若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成... 阅读全文
posted @ 2015-03-27 22:05 kpp 阅读(170) 评论(0) 推荐(0) 编辑
摘要: package kpp.sort;/** * 希尔排序 * 1.设定步长d,每隔d个元素分为一组,组内插入排序; * 2.d/=2,重复1步骤,直到步长为1 * * 们知道一次插入排序是稳定的,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以希尔排序是不... 阅读全文
posted @ 2015-03-27 22:03 kpp 阅读(159) 评论(0) 推荐(0) 编辑