- 博客(16)
- 资源 (22)
- 收藏
- 关注
原创 算法导论7-2,针对相同元素的快速排序
#include #include #include #include using namespace boost::timer;using namespace std;void same_elem_quick_sort(int *a,int low,int high)//考虑相同元素的情况{ if(low<high){ int pivot=a[low]; int i=
2013-12-31 19:23:14 2889 2
转载 快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快
2013-12-29 19:03:51 603
原创 二分法求单峰函数最大值
#include #include #include #include using namespace boost::timer;using namespace std;int recursive_unimodal(int *a,int low,int high)//二分法,找最大值{ if(low<high){ int mid=(low+high)>>1; int lo
2013-12-27 14:51:42 3164
转载 算法导论 5.3-3
1 问题假设不是将元素A[i]与子数组A[i…n]中的随机一个元素相交换,而是将它与数组任何位置上的随机元素相交换:PERMUTE-WITH-ALL(A)1 n <- length[A]2 for i <- 1 to n3 do swap A[i] A[RANDOM(1, n)]这段代码会产生均匀随机排列吗?为什么会?或为什么不会?
2013-12-27 14:32:39 1400
转载 算法导论 5.1-3
1 题目假设你希望以各1/2的概率输出0和1。你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以概率p输出1,以概率1-p输出0,其中02 分析与解答画出BIASED-RANDOM真值表输出值01概率1-pp基于BIASE-RANDOM真值表,画出独立的两次BIASED-RAND
2013-12-26 20:49:52 2135
转载 算法导论-VLSI芯片测试问题
Diogenes 教授有n个被认为是完全相同的VLSI芯片,原则上它们是可以互相测试的.教授的测试装置一次可测试二片,当该装置中放有两片芯片时,每一片就对另一片作 测试并报告其好坏.一个好的芯片总能够正确的报告另一片的好坏,但一个坏的芯片的结果就是不可靠的.这样,每次的测试的四种可能结果如下: a)证明若少于 n/2 的芯片是坏的,在这种成对测试方式下,使用任何策略都不能确定
2013-12-21 10:32:10 1557
原创 斐波那契数列
递归法,迭代法,近似值法#include #include using namespace boost::timer;using namespace std;double fib( double n){ if(n<=1) return n; else return fib(n-1) + fib(n-2);}double iteratorfib(double n){
2013-12-20 21:56:49 808
原创 矩阵乘法
《算法导论》第三版 P43-44#include #include #include using namespace boost::timer;using namespace std;int addrARA[4]={0,0,1,1},addrACA[4]={0,0,0,0}, addrBRA[4]={0,0,0,0},addrBCA[4]={0,1,0,1};int addrA
2013-12-20 14:21:01 597
原创 乘方问题
朴素乘方法和分治法:#include #include #include using namespace boost::timer;using namespace std;double powers(double a,int n)// naive solution{ if(a==1){ return 1; }else if(a!=0){ if(n==0){
2013-12-18 10:08:49 759
原创 最长子数组
问题描述:输入一个整数数组,数组中有正数也有负数,一个或连续的多个整数组成一个子数组,求所有子数组的和的最大值。求子数组的和的最大值,首先可以求出数组所有子数组的和,再逐一比较可以得到和的最大值。这是最直观易懂的一种解法。但是对一个长度为n的数组,总共有n(n+1)/2个子数组,计算所有子数组的和时间复杂度为O(n^2)。而当n较大时,这种算法是很难被用户接受的。对于数组(a1,
2013-12-17 15:43:19 1003
原创 霍纳规则计算多项式
霍纳规则假设有n+2个实数a0,a1,…,an,和x的序列,要对多项式Pn(x)= anxn +an-1xn-1+…+a1x+a0求值,直接方法是对每一项分别求值,并把每一项求的值累加起来,这种方法十分低效,它需要进行n+(n-1)+…+1=n(n+1)/2次乘法运算和n次加法运算。有没有更高效的算法呢?答案是肯定的。通过如下变换我们可以得到一种快得多的算法,即Pn(x)= a
2013-12-16 10:24:38 1506
原创 逆序对
对于一个包含N个非负整数的数组A[1..n],如果有i A[ j ],则称(A[ i] ,A[ j] )为数组A中的一个逆序对。例如,数组(3,1,4,5,2)的逆序对有(3,1),(3,2),(4,2),(5,2),共4个。#include #include #include #include #include#include using na
2013-12-16 09:11:48 696
原创 归并排序中对小数组采用插入排序
尽管合并排序最坏情况运行时间为O(nlgn),插入排序的最坏运行时间为O(n^2),但是插入排序的常数因子使得它在n较小时,运行要更快一些。因此,在合并排序算法中,当子问题足够小时,采用插入排序就比较合适了。考虑对合并排序做这样的修改,即采用插入排序策略,对n/k 个长度为 k 的子列表进行排序。然后,再用标准的合并机制将它们合并起来,此处k是一个待定的值。注:书里的那个O里还有一
2013-12-15 11:29:49 3213
原创 描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素
算法思路:首先对S[1...n]进行非降序排序,然后设置两个指向标i=1,j=n,执行下面的操作:S[i] + S[j] = X, 返回true > X, j = j-1 如果 i>j 返回false#include #include #include using namespace st
2013-12-14 16:24:58 4113
原创 归并排序
#include#include#include using namespace std;void merge(int *a,int p,int q,int r)//哨兵法{ int Ln=q-p+1; int Rn=r-q; int *La=new int[Ln+1]; int *Ra=new int[Rn+1]; for(int i=0;i<Ln;++i){ La[
2013-12-13 21:35:11 639
原创 算法导论2.1-4
题目有两个各存放在数组A和B中的n位二进制整数,考虑他们的相加问题。(翻译的够烂)两个整数的和存放在有n+1个元素的数组C中,请给出这个问题的形式化描述,并给出伪代码。分析考虑两个1位二进制数a和b,假设它们的和c是个2位二进制数,c[1]=ab,c[2]=(a+b)/2=(a+b)>>2。在考虑两个2位二进制数和,它们的和是个3位二进制数;当第
2013-12-13 10:30:41 1399
Speech Recognition Algorithms Using Weighted Finite-State Transducers
2018-06-24
H264中CAVLC的FFmpeg实现
2016-12-04
H264/AVC中CAVLC的FFmpeg实现
2016-12-04
VisualGDB调试Android JNI和Linux项目
2016-05-08
YUVviewer-HEVC
2013-05-25
基于OPENCV的超声图像增强
2012-05-17
编译原理 词法分析 。。。。。。。。。。。
2011-06-08
都市行 公交查询 j2me
2010-05-08
深入浅出Android--Google手持设备应用程序设计.pdf
2010-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人