![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 73
codetracer
学习造轮子
展开
-
shuffle 算法
<br />一种打乱顺序的算法,比如,洗牌,随机播放音乐(虽然有时候使用random)。<br /> <br />以洗牌为例,假设我们使用数组存放一副扑克:<br /> <br />比较容易的方法,就是每次产生一个随机数,然后用对应的元素与数组中的最后一个元素进行交换,若干次后便可将序列打乱。<br /> <br />for(i = 0; i< n; i++)<br />{<br /> d= rand();<br /> swap( card[d], card[n-1] );<br />}<br原创 2011-03-03 20:45:00 · 2301 阅读 · 0 评论 -
常用hash算法
这个比较多,还有性能测评:http://yuhuafx.blog.hexun.com/58369610_d.htmltimes33的哈希算法,就是乘以33求散列:static unsigned long int zend_inline_hash_func(const char *arKey, unsigned int nKeyLength) { register unsigned long int hash = 5381; /* variant with the原创 2011-03-11 13:04:00 · 4042 阅读 · 1 评论 -
Counting sort
<br />个人感觉,这个更像是索引排序:<br /> <br />这是一篇分析的 文章 :<br /> <br />我的实现:<br /> <br /> <br />/* *作者: JoKer *时间:2011.3.25 *作用:线性排序,时间复杂度O(n) * 这是一种非比较排序,所以速度比较快,但是有限制条件的 * 这个算法要求数组中的元素全是在已知范围的集合中,这里假设从0 到 dif_num的整数。 * */ #include <iostream> using原创 2011-03-25 20:12:00 · 970 阅读 · 0 评论 -
Top N 怎么办
<br />海量数据,取出TopN个数据,正常来说,先排一下序比较好,然后取出前N个即可。<br /> <br />可是有时候,N非常小,也就是说,从时间复杂度上来看,N*n < n*logn 了,这个时候,可以遍历一次,每次替换掉结果数组中最小的值,组成的序列就是需要的TopN。<br /> <br />算是一种特殊情况下的效率提升。<br /> <br />//DATASIZE 非常大才好 // int main(int argc, char** argv) { Tuple tuple[TOP原创 2011-04-15 14:10:00 · 1278 阅读 · 1 评论 -
combSort 复杂度O(n*log(n)) 虽然是两层循环
<br />思路很清晰,有一个控制因子shrink,限定每次开始的位置,并用swapped记录每次对局部交换后局部是否有序。虽然进行了两层循环,但是其复杂度却是 O(n*log(n))。 梳子排序。应该是那个shrink因子,让复杂度呈现log(n)的效果。<br /> <br />void combsort(int *arr, int size) { float shrink = 1.247330950103979; int gap = size, swapped = 1, swap, i;原创 2011-04-19 18:03:00 · 1153 阅读 · 0 评论 -
GnomeSort 又是一个O(n2),不过,只用一次循环……
<br /> <br />有些像冒泡,虽然只有一层循环,但是循环因子来回摆动……晃悠晃悠,就排好序了。<br />时间复杂度是O(n2)。<br /> <br /> <br />void gnome_sort(int n, int array[]) { int i = 0; while(i < n) { if(i == 0 || array[i-1] > array[i]) i++; else原创 2011-04-18 19:02:00 · 810 阅读 · 0 评论 -
KMP--比较清晰的一份
/* * @FileName: simKMP.c * @Author: wzj * @Brief: * 1.测试版本的kmp * * * * * @History: * * * * @Date: 2012年06月03日星期日22:05:45 * */ #include #include #include //improved o原创 2012-06-03 23:41:07 · 782 阅读 · 0 评论