摘要: 现在理论的还是少说些,例子更能理解吧,来个例子用二分检索算法设计与分析,下面算法函数过程bin_search有n+2个输入:a,n 和 x,一个输出j。只要待检索的元素存在,while循环就继续下去。case语句根据compare(x,a[mid])的结果的三种情况进行选择运行。函数过程结束时,如果x不在表a中,则j=0,否则 a(j)=x。void bin_search(elemType a[],int n,elemType x,int &j) {//给定一个按非递减排列的元素数组a(1:n),n>1,判断x是否出现。//若是,则置j,使得x=a(j),若非,则j=0。函数返回 阅读全文
posted @ 2013-11-08 21:19 技术让梦想更伟大 阅读(360) 评论(0) 推荐(0)
摘要: 分治法是最广泛使用的算法设计方法之一,其基本思想:把大问题分解成一些较小的问题,然后由小问题的解方便地构造出大问题的解。 分治法说穿了就是把问题放小,如果被分的问题还是比较大,那么久继续分下去。为了能清晰地反映采用分治策略设计算法的基本步骤,下面用一个称之为抽象化控制的过程来非形式的描述算法的控制流向,下面笔者举例来说明这个问题。void div(p,q) {int n,A[n]; //定义成全程变量int m,p,q; //1≤p≤q≤nif(small(p,q)) return(answer(p,q));else{m = divide(p,q); //p≤m<qreturn (com... 阅读全文
posted @ 2013-11-08 19:18 技术让梦想更伟大 阅读(359) 评论(0) 推荐(0)
摘要: (这一篇觉得写得很棒,故拷过来以便慢慢看,细细体会,详情请访问http://blog.csdn.net/shenmen123456/article/details/6575647)第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来.1.最短路(Floyd、Dijstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS、DFS,同时 阅读全文
posted @ 2013-11-08 01:32 技术让梦想更伟大 阅读(389) 评论(0) 推荐(0)