Algorithm
文章平均质量分 71
wangzhiqing3
学生
展开
-
编辑距离
做文本分析的时候,我们常常需要计算两篇文本的相关性(相关性除了可以使用相似度还可以使用距离-当然是应该反着来算的),如果你不知道把文本转换为一个向量(如果你知道这个,那遭了,因为那样你就可能认为我这里的很rubbish了),那你可能会考虑我们这里介绍的最朴素的方法-计算字符串间编辑距离的方法。 先给出我遇到的问题(也即定义编辑距离):设A 和B 是两个字符串。对于字符串可以原创 2012-12-23 10:31:00 · 794 阅读 · 0 评论 -
排序算法之堆排序
1.保持最大堆的性质:2.建立最大堆3.堆排序 1 MAX_HEAPIPY(A,i) 2 l=left(i) 3 r=right(i) 4 if(la[i]) 5 then largest=l; 6 else largest=i 7 if(ra[largest]) 8 then l原创 2013-10-09 10:44:29 · 3273 阅读 · 0 评论 -
有趣直观的排序算法
1. 快速排序介绍:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次转载 2013-10-05 11:45:42 · 3651 阅读 · 0 评论 -
根据先序中序求后序的递归算法
很久以前写过,现在把我的递归版本代码贴出[cpp] view plaincopystruct tree { char c; struct tree * left_child; struct tree * right_child; } * root; tree * create_tree(char pre[], char in[], i原创 2013-09-14 16:30:15 · 771 阅读 · 0 评论 -
二维数组查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。 我的解题思路是这样的矩阵行列都是从小到大排好序的原创 2013-09-13 09:38:04 · 698 阅读 · 0 评论 -
等概率随机函数的实现
题目:已知随机函数rand(),以p的概率产生0,以1-p的概率产生1,现在要求设计一个新的随机函数newRand(), 使其以1/n的等概率产生1~n之间的任意一个数。解决思路:可以通过已知随机函数rand()产生等概率产生0和1的新随机函数Rand(),然后调用k(k为整数n的二进制表示的位数)次Rand()函数,得到一个长度为k的0和1序列,以此序列所形成的整数即为1--n之间的数字。注转载 2013-09-12 15:28:19 · 658 阅读 · 0 评论 -
split c 实现
#include #include int main(void){char input[16] = "abc,d";char *p;/**/ /* strtok places a NULL terminatorin front of the token, if found */p = strtok(input, ",");if (p) printf("%s\n"原创 2013-09-12 15:16:32 · 1100 阅读 · 0 评论 -
淘宝笔试题
通用试题部分:选择题1、在按层次遍历二叉树的算法中, 需要借助的辅组数据结构是A、队列B、栈C、线性表D、有序表2、所谓指令周期是指A、取指令和取操作数的时间B、执行指令和存储操作结果的时间C、取操作数和执行指令的时间D、取指令和执行指令的时间3、 调用一成员函数时, 使用动态联编的情况是A、通过对象调用一虚函数B、通过指针或引用调用一虚函数原创 2013-09-12 15:52:06 · 1061 阅读 · 0 评论 -
算法笔试题
第19题a[i]在排序后的位置是[i-k, i+k],a[i+2k]在排序后的位置是[i+k, i+3k],必然有a[i] 所以数组a里实际上有2k个各自有序的、交错的子序列,如a1={a[0], a[2k], a[4k]...},a2={a[1], a[2k+1], a[4k+1], ...} 所以可以用2k-路归并排序,用一个大小为2k的小顶堆辅助归并,转载 2013-09-12 09:06:44 · 815 阅读 · 0 评论 -
蛇型数组
直接上代码:[cpp] view plaincopy#include #include int main(void) { //用户输入的值,创建n*n的矩阵 int n; //蛇形从1开始计数 int count = 1; //a[x][y],x是二维数组的第一个下标,y是第二个。 //round原创 2013-09-10 16:43:10 · 732 阅读 · 0 评论 -
链表逆序
设链表节点为[cpp] view plaincopytypedef struct tagListNode{ int data; struct tagListNode* next; }ListNode, *List; 要求将一带链表头List head的单向链表逆序。分析: 1). 若链表为空或只有一个元素,则直接返回; 2原创 2013-09-10 15:11:03 · 609 阅读 · 0 评论 -
二叉树遍历
二叉树的遍历是指按照一定次序访问二叉树中的所有节点,且每个节点仅被访问一次的过程。是最基本的运算,是其他运算的基础。 二叉树有两种存储结构:顺序存储和链式存储 顺序存储: (对完全二叉树来说,可以充分利用存储空间,但对于一般的二叉树,只有少数的存储单元被利用)[cpp] view plaincopytypedef struct {原创 2013-09-11 08:10:23 · 662 阅读 · 0 评论 -
求排序数组的元素的绝对值的最小值
题目:一个有序数组(从小到大排列),数组中的数据有正有负,求这个数组中的最小绝对值。思路:一个简单的思路,就是一次性遍历数组,求出数组的元素的绝对值的最小值,这样的时间复杂度为O(n)。但是,这样就浪费了题目的一个条件:数组是已经排好序的。所以,需要对原来的题目进行转换。考虑到数组有序,则元素绝对值的最小值为数组中最大负数的绝对值与最小非负数的绝对值的最小值。于是,题目事实上是去查找原数组原创 2012-12-21 16:19:01 · 2379 阅读 · 0 评论 -
豆瓣笔试题2答案
原创 2013-11-01 16:22:24 · 3899 阅读 · 0 评论