随笔分类 -  数据结构

geohash编码算法在LBS中的应用
摘要:随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆、银行、妹纸等等)。 基础数据中,一般保存了目标位置的经纬度;利用用户提供的经纬度,进行对比,从而获得是否在附近。 目标: 查找附近的某某某,由近到远返回结果,且结果中有与目标点的距离。 理论:https://github.com/pho 阅读全文

posted @ 2018-03-19 13:29 果然朝辉 阅读(1263) 评论(0) 推荐(0)

二分查找算法
摘要:![](http://images2015.cnblogs.com/blog/1085906/201702/1085906-20170202002522167-1253189114.png) 阅读全文

posted @ 2017-02-02 00:26 果然朝辉 阅读(127) 评论(0) 推荐(0)

基数排序
摘要:算法分析 【1】时间复杂度为O(d(n+r))【d代表关键字有d位,n代表n个记录,r代表r个空队列】 【2】辅助空间复杂度S(n) = O(n+r)【n代表n个记录,r代表r个空队列】,是一个就地排序 【3】基数排序是稳定的排序方法 来自为知笔记(Wiz) 阅读全文

posted @ 2016-12-24 22:03 果然朝辉 阅读(237) 评论(0) 推荐(0)

归并排序
摘要:基本思想:将有序的子序列进行归并,从而得到有序的序列。 来自为知笔记(Wiz) 阅读全文

posted @ 2016-12-24 22:01 果然朝辉 阅读(140) 评论(0) 推荐(0)

选择排序
摘要:基本思想:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。直接选择排序1.基本思想2.算法分析 堆排序 1.堆的定义2.大根堆和小根堆3.堆排序与直接插入排序的区别 4.基本思想 调整堆符合堆的性质算法 建成初始堆 5.算法分析 【1】时间复杂度为O(nlog2^n) 【2】辅助空间复杂度S(n) = O(1),是一个就地排序 【... 阅读全文

posted @ 2016-12-24 21:59 果然朝辉 阅读(220) 评论(0) 推荐(0)

交换排序
摘要:基本思想:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。冒泡排序1.基本思想 将被排序的记录数组R[1...n]垂直排序,每个记录R[i]看做是重量为R[i].key的气泡。根据轻气泡不能再重气泡之下的原则,从下往上的原则,从下往上(也可以从上往下)扫描数组R,一旦扫描到违反此原则的轻气泡,就使其向上“漂浮”。如此反复进行,直到最后任何两个气... 阅读全文

posted @ 2016-12-24 21:58 果然朝辉 阅读(312) 评论(0) 推荐(0)

插入排序
摘要:基本思想:每次将一个待排序的记录,按其关键字大小插入已经排好序的文件中的适当位置,直到全部记录插入完为止(像打牌一样,边抓边整理)直接插入排序1.算法思想 假设待排序的记录存放在数组R[1....n]中。初始时,i=1,R[1]自成一个有序区,无序区为R[2...n]。然后,从i=2起直至i=n,依次将R[i]插入当前的有序区R[1...i-1]中,最后,生成含n个记录的有序区。 2.... 阅读全文

posted @ 2016-12-24 21:55 果然朝辉 阅读(230) 评论(0) 推荐(0)

排序算法结构表
摘要:来自为知笔记(Wiz) 阅读全文

posted @ 2016-12-24 21:54 果然朝辉 阅读(104) 评论(0) 推荐(0)

两个数字交换的四种方法
摘要:对于两种变量的交换,我发现四种方法,下面我用Java来演示一下。 1.利用第三个变量交换数值,简单的方法。 class TestEV //创建一个类 { public static void main(String[]args) { int x =5,y=10; //定义两个变量 int temp 阅读全文

posted @ 2016-12-24 21:51 果然朝辉 阅读(1398) 评论(0) 推荐(0)

LRU算法实现
摘要:LRU是Last Recent Used 缩写,做为一种缓存算法,将最近较少使用的缓存失效。memcache采用了该算法。如下采用了一种PHP的实现方式。该算法将每次新增的内容,放到缓存顶部,达到缓存极限时,将缓存底部的内容清除。可以通过如下PHP代码来模拟。 来源: http://it.taocm 阅读全文

posted @ 2016-12-24 21:50 果然朝辉 阅读(178) 评论(0) 推荐(0)

导航