Algorithms
小小攻城师
这个作者很懒,什么都没留下…
展开
-
合并排序
说出来可能没有人会相信,就一个合并排序算法,我调了两天愣是没有调通。给自己找了两个借口:第一,很久没有写C语言的代码了,已经生疏了;第二,我完全用控制台,用vim来编辑,gcc来编译程序,用gdb来调试程序,所以调试不顺利。擦,对自己无语了,加油,今天算是调通了,这是算法的第一篇日志,先贴代码。 下面是merge.c的代码,merge函数主要的作用是,将已排序的两部分,合并成一个已排序部分。原理很简单,参数arr是需要被排序的数组,p是数组前半部分开始时的下标,q是数组后半部分开始的下标,r是后半部分最后原创 2011-03-17 23:10:00 · 949 阅读 · 0 评论 -
常用YUV转RGB代码
常用YUV转RGB java代码public class YuvToRGB { private static int R = 0; private static int G = 1; private static int B = 2; //I420是yuv420格式,是3个plane,排列方式为(Y)(U)(V) public static int[] I420ToRGB(b原创 2013-12-15 15:10:12 · 38318 阅读 · 10 评论 -
I420转RGB
自己写的一个从YUV420(I420)转RGB的应用程序public class YuvToRGB { private static int R = 0; private static int G = 1; private static int B = 2; public static int[] I420ToRGB(byte[] src, int width, int height)原创 2013-12-12 21:05:19 · 7481 阅读 · 4 评论 -
平衡二叉树及其应用场景
昨天腾讯面试把平衡二叉树当做排序二叉树,绝对遭鄙视了,汗...平衡二叉树简称平衡树,是由Adelson-Velskii和Landis于1962年首先提出的,所以又称为AVL树。他的定义很简单,就是若一棵二叉树的每个左右节点的高度差最多相差1,此二叉树即是平衡二叉树。把二叉树的每个节点的左子树减去右子树定义为该节点的平衡因子。二叉平衡树的平衡因子只能是1、0或者-1。平衡二叉树是对二叉搜索树原创 2011-04-25 09:35:00 · 39877 阅读 · 8 评论 -
京东笔试题
时间:2011年9月15日 地点:川大就业中心201京东笔试的场面真让人长见识,分两批笔试,就这样还要拥挤进去,实在被逼的没办法,我是跳窗子进去的。下面是今天的笔试题目(没有的答案的自己百度):1. 已知二叉树的前序中序求后序,还有问已知中序后序能否确定一棵二叉树。2. 冒泡排序算法的结束条件是什么。3. 集合关系是一个____的集合。 线性结构的关系是_____的关原创 2011-09-15 23:53:14 · 13481 阅读 · 6 评论 -
2011微软笔试题
时间:2011年9月17日 地点:川大就业中心209例行交代一下,今天早上闹钟不知道的何故没有响(每次有事的时候总出问题)。8点钟起床,8点20出发。三环外堵车,92路还堵。下车9:35,因为提前二十分钟进场,我就跑过去了。我原以为迟到会直接取消资格,结果10点才开始,而且有个姐姐过了开考半个多小时才过来,太飙汗了。全英文的,20道选择题,不定项选择,分值不一样。全选中满分,以下全部原创 2011-09-17 23:19:46 · 4332 阅读 · 2 评论 -
微软笔试题(附答案)
1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?3.如果你有无穷多的转载 2011-09-16 14:28:22 · 20936 阅读 · 0 评论 -
哈夫曼树和哈夫曼编码
#include #include //二叉树的每一个节点struct t_node{ int data; struct t_node *left; struct t_node *right;};//创建一棵哈夫曼树 struct t_node* create_huffman_tree(int datas[], int n){ //用于创建n个二叉树节点原创 2011-06-24 15:13:00 · 1308 阅读 · 1 评论 -
动态规划初步探索
动态规划(dynamic programming),又称dp问题,是求决策过程最优化的数学方法。即把多阶段过程转化为一系列但阶段问题,利用各阶段之间的联系,逐个求解。至于具体的定义百度google一下,这里就不再啰嗦了。简单说一下我自己理解的动态规划,类似于分治法(当然他们肯定不一样),将期待解决的问题分解成若干个子问题,先求子问题,将每个子问题的解存入表中(因为子问题之间不像分治法,分治法子问题原创 2011-06-21 16:58:00 · 1152 阅读 · 2 评论 -
递归问题
<br /> <br />转自:http://blog.csdn.net/justinavril/archive/2008/08/01/2753596.aspx<br /> <br />所谓递归问题,可以分成两部分来理解:一是基本问题,也可以称之为原始问题,比较好解决;二是后续问题,比较复杂,但是和原始问题比较类似,可以调用自身的一个新的副本去解决它。<br />最简单的可以归为递归问题的就是阶乘,1的阶乘我们知道是1,2的阶乘为2*1=2*1!,而3的阶乘又是3*2!...这样我们就能够知道如何用递归去实转载 2011-05-14 00:51:00 · 869 阅读 · 0 评论 -
逆序数 时间复杂度O(nlgn)
<br />逆序数的定义,摘自百度百科:<br />在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。<br />我是在看算法导论的时候,看到合并排序的课后习题有一个逆序数,要求是在O(nlgn)的时间复杂度之内查找出来。最直接的算法就是双重循环,类似于冒泡排序法,对整个数组进行外循环,内循环原创 2011-03-19 15:21:00 · 2254 阅读 · 1 评论 -
插入排序
<br />插入排序算法是一个比较经典的算法,他的时间复杂度为O(n2),虽然效率比合并排序要差一点,但是他的算法比较容易理解,对于少量数据的排序要优于合并排序。并且经典的shell排序方法就是先分组后然后使用插入排序法来排序的。<br />插入排序的思路很简单,以下讲解顺序排序。像我们平时打牌一样,拿到第一张排可以看成是一个已排序的数组(只有一个元素);然后拿了第二张牌与第一张牌比较,如果比第一张牌大,那么将第二张牌放到第一张牌后,如果比第一张小,则放入到第一张前面;第三张牌如果比第二张牌大,就直接放入最原创 2011-03-18 20:14:00 · 802 阅读 · 0 评论 -
YUV422转RGB
YUV422格式为YV16,YV16的存储方式是3 planer,即先存储所有的y,然后是所有的u,最后是所有的v。 public static int[] YV16ToRGB(byte[] src, int width, int height){ int numOfPixel = width * height; int positionOfU = numOfPixel; int原创 2013-12-14 18:13:23 · 10576 阅读 · 0 评论