
算法和数据结构
auvKone
未知攻,焉知防
展开
-
欧几里得算法
又称辗转相除法,计算两个数的最大公约数。typedef unsigned int UINT;UINT Gcd(UINT M, UINT N){ UINT rem; while(N > 0){ rem = M % N; M = N; N = rem; } return M;}原创 2015-01-06 17:34:31 · 516 阅读 · 0 评论 -
二分查找
在排序的数组中查找一个数,不存在则返回-1。int binarySearch(int a[], int num, int value){ int low, mid, high; low = 0; high = num - 1; while(low <= high){ mid = (low + high) / 2; i原创 2015-01-06 17:21:50 · 515 阅读 · 0 评论 -
牛顿勘根法
牛顿勘根法是计算平方跟的一个算法。python代码实现如下:def sqrt(n): approx = n/2.0 better = (approx + n/approx)/2.0 while better != approx: approx = better better = (approx + n/approx)/2.0原创 2014-12-23 17:54:59 · 1479 阅读 · 0 评论 -
快速排序——C语言实现
递归实现:void quickSort(int a[], int size){ int i = 0, j = size-1; int val; if(size < 2) return; val = a[0]; while(i < j){ for(;j>i;j--){ if(a[j] < val原创 2014-12-28 10:23:21 · 770 阅读 · 0 评论 -
最大子序列和问题
给定整数A1,A2,...,AN(可能有负数),求∑Ak,k从i到j。如果所有整数均为负数,则最大子序列位0。例如:输入:-2, 11, -4, 13, -5, -2输出:20int maxSubSum(int a[], int N){ int thisSum, maxSum, i; thisSum = maxSum = 0; f原创 2015-01-06 16:34:00 · 487 阅读 · 0 评论 -
快速排序C语言实现
非递归实现:#include #define MAX_THRESH 4typedef struct{ int *lo; int *hi;}stack_node;#define STACK_SIZE (8 * sizeof(int))#define PUSH(low, high) ((void) ((top->lo = (low)), (top->hi = (hi原创 2015-01-26 12:57:22 · 640 阅读 · 0 评论 -
topk问题C++实现
实现1:#include using namespace std;int partition(int a[], int left, int right){ //从左、中、右3个元素中取中间值放在最右边 int mid = (right - left)/2; if (a[left] > a[mid]) swap(a[left], a[mid]);原创 2015-01-24 21:42:23 · 2988 阅读 · 0 评论 -
模糊哈希算法的原理与应用
关于模糊哈希(Fuzzy Hashing)算法,目前网上有几篇中文资料介绍,但均不准确。写这篇文章以纠正,并对其原理和应用作详细的介绍。一、概述模糊哈希算法又叫基于内容分割的分片分片哈希算法(context triggered piecewise hashing, CTPH),主要用于文件的相似性比较。2006年,Jesse Kornblum [1] 提出CTPH,并给出一转载 2016-03-03 17:40:53 · 1521 阅读 · 0 评论