算法
文章平均质量分 62
RangeYan2012
欢迎大家与我交流技术问题!我的QQ:332478640
展开
-
经典hash算法比较和C语言实现
常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对转载 2016-01-27 14:40:40 · 8754 阅读 · 0 评论 -
Apache Kylin Cube构建算法
逐层算法在介绍快速Cube算法之前,我们先简单回顾一下现有的算法,也称之为“逐层算法”(By Layer Cubing)。我们知道,一个N维的完全Cube,是由:1个N维子立方体(Cuboid), N个(N-1)维Cuboid, N*(N-1)/2个(N-2)维Cuboid …, N个1维Cuboid, 1个0维Cuboid,总共2^N个子立方体组成的;在“逐层算法”中,按维度数逐原创 2017-02-13 17:11:37 · 2707 阅读 · 0 评论 -
数据结构与算法之快速排序
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。时间复杂度:O原创 2017-03-18 16:10:41 · 736 阅读 · 0 评论 -
数据结构与算法之有序链表去重
1. 有序链表,需要将链表中重复的节点合并为一个节点(例如:[1,2,3,3,3,5,7,8,8,9,13,14]) 合并为[1,2,3,5,7,8,9,13,14])struct ListNode{ int val; ListNode* next;} ListNode* uniq_list(ListNode* head){ if(head == Null || head ->原创 2017-03-05 16:46:40 · 4573 阅读 · 0 评论 -
数据结构与算法之整体有序数组的查找
一个组数整体上是有序的(或者说是循环有序),需要找到其中的某个元素假设数组整体是升序的,基于二分查找算法实现如下:非递归实现int search(int a[],int length,int target){ int low = 0; int high = length-1; while(low <= high) { int mid=low + (high原创 2017-03-05 15:53:41 · 491 阅读 · 0 评论 -
数据结构与算法之二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以原创 2017-03-04 10:48:29 · 454 阅读 · 0 评论