![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法分析与设计
文章平均质量分 60
沈家大帅
young man
展开
-
递归与尾递归
线性递归long factorial(long n){ return(n == 1) ? 1 : n * factorial(n - 1); } 尾递归long fact_iter(long product, long counter, long maxcount){ return (counter > maxcount)转载 2012-11-16 19:13:21 · 892 阅读 · 0 评论 -
教你如何迅速秒杀掉:99%的海量数据处理面试题
原文链接:http://blog.csdn.net/v_july_v/article/details/7382693前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。转载 2013-05-25 19:55:22 · 917 阅读 · 0 评论 -
糖果传递问题和仓库运输问题
1、糖果传递问题:老师准备了一堆糖果,恰好n个小朋友可以分到数目一样多的糖果.老师要n个小朋友去拿糖果,然后围着圆桌坐好,第1个小朋友的左边是第n个小朋友其他第i个小朋友左边是第i-1个小朋友。大家坐好后,老师发现,有些小朋友抢了很多的糖果,有的小朋友只得到了一点点糖果,甚至一颗也没有,设第ai个小朋友有ai颗糖果.小朋友们可以选择将一些糖果给他左边的或者右边的小朋友,通过”糖果传递”最后使得原创 2013-05-09 15:50:47 · 1867 阅读 · 0 评论 -
N!中含有质因数2的个数
编程之美127页,N!中含有质因数2的个数 = [N/2] + [N/4] + [N/8] + [N/16] + .....要理解上式,先看编程之美126页,N!中含有质因数5的个数Z举例:N = 25 ,即1~255的倍数(5,10,15,20,25)贡献一个525的倍数贡献一个5虽然25可以贡献两个5,但是已经在5的倍数中贡献一次了,所以这里就统计一次原创 2013-04-01 17:01:15 · 1916 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序转载 2013-04-30 20:15:34 · 734 阅读 · 0 评论 -
数学建模的十大算法
1、蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法) 2、数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具) 3、线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多数问题属于最优化问题,很多时转载 2013-04-12 09:17:32 · 1110 阅读 · 0 评论 -
数组随机洗牌
一、Python代码参看def shuffle(self, x, random=None, int=int): """x, random=random.random -> shuffle list x in place; return None. Optional arg random is a 0-argument function returning a random f原创 2013-03-27 11:23:20 · 844 阅读 · 0 评论 -
不重复的随机数
高效产生m个n范围内的不重复随机数(m//法1int a[100];for(i=0; i<=99; ++i) a[i]=i;for(i=99; i>=1; --i) swap(a[i], a[rand()%i]); //法2int a[100]={0};int i, m;for(i=1; i<=99; ++i){ while(a[m=rand()%100]);转载 2012-11-25 20:45:39 · 997 阅读 · 0 评论 -
A* 寻路算法
A* 寻路算法概述虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的。搜索区域(The Search Area)我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B ,中间蓝色是墙。图 1你应该注意到了,我们把要搜寻的区域划分成了正方形的格子。这是寻路的第一步,简化搜索区域,就像我们转载 2013-03-05 17:57:28 · 2164 阅读 · 0 评论 -
字符串匹配及KMP算法备忘
听完徐老的String mathing那节课,感到有兴趣。果断复习了大学时学的KMP,也查阅了BM算法相关资料。严蔚敏版数据结构中有关KMP的部分:KMP中next[j]的定义:两个主要的函数:算法4.6和算法4.7书中也指出了算法4.7中的next函数的缺陷(其实说缺陷有点夸张吧。。只是还有改进空间而已)原创 2013-01-24 16:10:29 · 769 阅读 · 0 评论 -
最大公约数与最小公倍数
辗转相除算法的简介 在数论中,辗转相除法(国际上一般称为Euclidean Algorithm 或 Euclid's Algorithm,即欧几里得算法)是一种求任意两个欧几里得环(Euclidean Domain)中的单位(如:整数)的最大公约数的算法。这个算法的一个重要特点就是其不需要通过分解因式来求取最大公约数。辗转相除法正因为其易操作性与易实现性而成为了计算机编程中的一个重要的求最大转载 2012-12-30 20:34:23 · 1274 阅读 · 1 评论 -
平面点对实验
OJ地址:POJ3714 ZOJ2107 HDU1007参考:点击打开链接本人的实验程序:package sse.algorithm;import java.util.ArrayList;import java.util.List;public class ClosestPointPair { /* * 实验:分治法O(n*lg(n))时间内求二维原创 2012-12-07 20:37:33 · 582 阅读 · 0 评论 -
求最长单调递增子序列算法
转自:点击打开链接转载 2012-12-07 19:25:03 · 746 阅读 · 0 评论 -
区间树查找算法
一、题目 题目:区间树查找算法 实验目的:实现有效的区间树查找算法二、算法思想1、基本概念:区间:一个事件占用的时间闭区间:实数的有序对[t1,t2],使t1≤t2区间的对象表示:[t1,t2]可以用对象i表示,有两个属性:low[i]=t1//起点或低点high[i]=t2//终点或高点区间的重叠:i∩i’≠Ø ⇔(low[i]≤high[i原创 2012-11-20 12:15:13 · 6861 阅读 · 2 评论 -
红黑树插入实验
一、题目 题目:红黑树插入算法 实验目的:实现有效的红黑树插入算法二、算法思想① 第一步和一般的搜索二叉树没什么区别。从树根开始搜索,如果插入值比节点大,就向右子树搜索,比节点小则向左子树搜索。直到走到叶节点位置,将插入值放在这个节点上。并标记它为红色。② 之后,红黑树可能需要调整平衡。对第4条性质的恢复,根据Z的父节点是Z的祖节点的左子节点还是右子节点,原创 2012-11-20 11:05:55 · 1374 阅读 · 0 评论 -
快速排序算法及优化
一、题目 题目:快速排序算法及优化。本实验目的主要研究以下两点:1、快排算法的两种实现与比较 2、利用插入排序优化快排算法的两种实现与比较,以及测试不同k值对结果的影响二、算法思想1、设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为: ①分解: 在R[low..high]中任选一 个记录作为基准(Pivot),以此基准将当前无序区划原创 2012-11-16 19:28:39 · 7188 阅读 · 0 评论 -
大数阶乘算法
一:精度要求较低的阶乘算法如果只是要求算法的速度,而对精度要求比较低的话可以直接使用,斯特林公式计算n!斯特林公式如下:n!=sqrt(2*PI*n)*(n/e)^n*(1+1/12/n+1/288/n2–139/51840/n3-571/2488320/n4+…)或ln(n!)=0.5*ln(2*PI)+(n+0.5)*ln(n)-n+(1/12/n -1/360转载 2013-05-14 19:42:15 · 2219 阅读 · 0 评论