
algorithm
文章平均质量分 94
追寻北极
没有月亮的晚上,我们相信星光。没有路可走的时候,我们相信远方.--
展开
-
基数估计
问题的背景是在大数据冲击下,很多数据指标(尤其是涉及到去重的)的计算无法在合理的空间和时间内完成,比如uv的计算,数学原型问题等价于持续的向一个集合中写数,重复的不记,要求最终给出集合中不重复的元素的个数(集合的势)。而比较暴力的做法是随着数字增多不断的扩展集合的大小,让它放下所有的数,最终数出这个个数就OK。显然这样的空间复杂度在单机下是做不到的,所以多数做法是利用分布式原理将uv数据隔离到不同转载 2014-09-05 23:15:55 · 1466 阅读 · 0 评论 -
二分查找
public class BinarySearch { /** * 二分查找算法 * * @param srcArray 有序数组 * @param key 查找元素 * @return key的数组下标,没找到返回-1 */ public static转载 2015-04-13 17:53:49 · 743 阅读 · 0 评论 -
点分十进制IP和长整型转换
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.用途将一个整型数值和一个IP字符串相互转换。2.描述语言C, Java3.原理IP地址是一个以点作为分隔符的十进制四字段字符串,例如“10.0.3.193”。将这四个十进制数转化为二进制即为:每段数字 相对应的二进制数 10转载 2015-04-13 17:42:01 · 3650 阅读 · 0 评论 -
程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)
接上一篇:程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) . 3.简单选择排序(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(2)实例:(3)用java实现[pl转载 2015-04-13 17:33:44 · 617 阅读 · 1 评论 -
堆排序
堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i转载 2015-04-13 17:30:29 · 462 阅读 · 0 评论 -
纯Java实现的多路归并快速排序算法
纯Java实现的多路归并快速排序算法,占用内存极少,速度很快,能处理上亿条的海量数据,无任何依赖.标签: 多路归并 排序代码片段(2)[全屏查看所有代码]1. [代码]纯Java实现的多路归并快速排序算法 ?12345678910转载 2015-04-13 18:02:05 · 2181 阅读 · 0 评论 -
算法——二分查找算法(Java实现)
1、前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序2、原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。可能描述得不是很清楚,若是不理解可以去网上找。从转载 2015-04-13 17:36:53 · 709 阅读 · 0 评论 -
java实现二叉树的多种遍历
简述:用Java实现二叉树的前序,中序,后序,层序遍历, S型层序遍历算法简述:前三个算法在于输出当前节点的位置,1 前序: 在递归左右儿子之前,输出当前节点[java] view plaincopyvoid PreOrderPrint(){ System.out.print(valu转载 2015-04-13 15:14:05 · 848 阅读 · 0 评论 -
经典排序算法(Java版)
权当复习,以备引用(理论来源于:http://www.zsqz.com/jsbase/Suanfa/index.html?defination.htm,感谢该网站。JAVA源码为我所写)1、冒泡排序 Bubble Sort最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理转载 2015-04-13 14:17:04 · 515 阅读 · 0 评论 -
二叉树的遍历 递归非递归 思路和 java实现
二叉树遍历首先弄清遍历流程。中序遍历:第一次经过从它找左,第二次经过找右,第三次经过回来。第二次经过访问它。算法实现:第二次访问是 pop(&S,&p);Visit(p->data);因为中序遍历跟第三次经过没关系。所以第二次就弹出栈了。Java版的程序如下:[java] view plaincopypackage c转载 2015-04-13 14:15:01 · 780 阅读 · 0 评论 -
Java实现归并排序
public class MergeSort { //将有二个有序数列a[first...mid]和a[mid...last]合并。 static void mergearray(int a[], int first, int mid, int last, int temp[]) { int i = first, j = mid + 1;转载 2015-04-13 17:59:51 · 545 阅读 · 0 评论