算法
松哥是好人
嗯哼
展开
-
排序-----------------插入排序,冒泡排序
1.插入排序 INSERT-SORT设数组A是无序数组非降序for( i = 2; i { key = A[i]; j = i - 1; while( j >= 1 && A[j] > key) { A[j + 1] = A[j]; j = j - 1; } a[j + 1] = key;}非升序for( i = 2; i {原创 2012-03-21 11:47:14 · 566 阅读 · 0 评论 -
排序------------------分治策略与组合法
1.分治法插入排序使用增量法:在排好的A[1],A[2],...,A[j - 1]子数组后(A[1]为第一个元素),将A[j]插入,形成排好的子数组A[1],A[2],...,A[j]。分治法是解决递归问题的一种策略:将原问题分成n个规模较小而结构与原问题相似的子问题,递归地解决这些子问题,然后再合并这些结果,得到原问题的解。分治法在每层递归上都分为三步:分解:将原问题分为一系列子原创 2012-03-21 15:09:56 · 801 阅读 · 0 评论 -
排序----堆排序
插入、合并、堆、快速排序通过对数组中的元素进行比较来实现,对任何n个输入来说,最坏运行时间下界为Ω(n*lgn)。注:lgn是log2(n)A是一个任意数组,这里举例为A[10] = {16,14,10,8,7,9,3,2,4,1}将数组以二叉树形式展示,结点下标与数组下标对应:i的父节点parent(i) = i/2左节点left(i) = 2i 右节原创 2012-03-16 17:32:06 · 628 阅读 · 0 评论 -
rsync算法及其优化算法
rsync算法要解决的问题很简单:A和B两个文件在两台服务器中,要将A同步到与B一致,要求尽量减少同步带来的网络传输开销。rsync基本算法先说基本的rsync算法,并不复杂,简单的说是三步:1、按固定大小将A分为多块,每块都计算出一个32位的滚动哈希值和一个128位的MD4(有些也用MD5),发给B一端。2、B一端从位置0开始按的同样块大小的滚动哈希值,查找看是否命中A给的某转载 2012-05-29 14:16:08 · 2400 阅读 · 0 评论 -
判断一个字符串中是否包含某个字符
列了三种方法:1.循环遍历;这个不用多说。2.集合分组;可以按某种规则分组,比如ASCII码相邻的为一组,举例在“321@bcds”中找'c',分组排序为“123”,“@”,“bcd”,“s”,将分好的组存入一个静态变量中,供多次调用。3.类似bitmap图的方法;还是举ASCII码为例,可将256个ASCII字符按某类规则放入一个8*32的表中(这里可以按除8取余的方式),被查字符串原创 2011-10-08 14:44:55 · 6394 阅读 · 1 评论