![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计与分析
文若书生
这个作者很懒,什么都没留下…
展开
-
快速排序
1、算法原理 快速排序(quicksort)是在实践中最快的已知排序算法,它的平均运行时间是O(NlogN)。该算法之所以特别快,主要是由于非常精炼和高度优化的内部循环。像归并排序一样,快速排序也是一种分治的递归算法。将数组S排序的基本算法由下列简单的四步组成: (1)如果S中元素个数是0或1,则返回。 (2)取S中一个元素v,称之为枢纽元(pivot)。 (3)将S-{v}(S中其余元素原创 2013-04-15 15:09:02 · 624 阅读 · 0 评论 -
拼图游戏的步骤求解
前两天突然想做一个android拼图游戏的小程序玩一下,csdn博客上fa原创 2014-08-17 11:42:43 · 1293 阅读 · 2 评论 -
拈游戏
1、问题描述 有一堆n个棋子,两个玩家轮流从堆中拿走1到m个棋子,每次拿走的棋子数都可以不同,但能拿走的上下限不变。如果每个玩家都做出了最佳的选择,第一个玩家在n为多少时会胜利。 2、代码 /*+++++++++++++++++++++++++++++ + 拈游戏 + +author:zhouyong 2013-5-1 21:3原创 2013-05-01 21:28:45 · 1521 阅读 · 0 评论 -
公司购物
1、问题描述 公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。 程序输入: 第一行是一个整数m,代表可购买的商品的种类数。 接下来是m个整数,每个1行,分别代表这m种商品的单价。 程序输出: 第一行是一个整数,表示共有多少种方案 第二行开始,每种方案原创 2013-05-02 14:02:02 · 605 阅读 · 0 评论 -
单色位图的联通性
1、问题描述 读取一张单色位图,输出位图中有几个联通区域,每个联通区域的像素的个数。 如图像: 输出: 12 81 52 133 (输出顺序可能不一样)。 2、代码 /*++++++++++++++原创 2013-05-01 21:11:54 · 784 阅读 · 0 评论 -
桶排序
1、算法原理 百度百科上面有详细讲解,http://baike.baidu.com/view/1784217.htm。 2、代码 /*+++++++++++++++++++++++++++++++ + 桶排序(C版) + + 原理不是很复杂。 +author:zhouyongxyz 2013-4-17 12:34 +++++++++++++++++++++++++++++++++++原创 2013-04-17 12:28:07 · 492 阅读 · 0 评论 -
分离链接散列表
1、原理 暂时略,先贴代码。 2、代码 (1)main.cpp /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 分离链接散列表(C版) + + +author:zhouyong 2013-3-4 19:03 +++++++++++++++++++++++++++++++++++++++++++++++原创 2013-04-15 19:30:13 · 689 阅读 · 0 评论 -
希尔排序
1、算法原理 希尔排序(Shellsort)的名称源于他的发明者Donald Shell,该算法是冲破二次时间屏障的第一批算法之一,不过,自从它别发现若干年之后才证明了他的亚二次时间界。它通过比较相距一定间隔的元素来工作的,每次相距一定间隔的元素采用插入排序对齐排序,然后每趟比较所用的间隔距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止,即间隔距离为1时。 希尔排序使用一个序列h原创 2013-04-14 21:21:03 · 550 阅读 · 0 评论 -
归并排序
1、算法原理 归并排序(mergesort)以O(NlogN)最坏情形运行时间运行,而使用的比较次数几乎是最优的。它是递归算法一个很好的实例。 算法的基本操作就是合并两个已排序的表。因为两个表是已排序的,所以若将输出放到第三个表中时则该算法可以通过对输入数据一趟排序来完成。 2、代码 /*+++++++++++++++++++++++++++++++++++++ + 归并排序(原创 2013-04-15 14:56:58 · 555 阅读 · 0 评论 -
堆排序
1、算法原理 堆排序的算法主要依据最大堆和最小堆来进行对数据的排序的。首先我们介绍一下堆得概念,堆分为最大和最小堆。 堆定义: 设n个元素的数据序列{k(0),k(1),...,k(n-1)},当且仅当满足下列关系 k(i) 或 k(i)>=k(2i+1)且k(i)>=k(2i+2) i=0,1,2,....,n/2-1 时,序列{k(0),k(1),...,k(n-原创 2013-04-15 14:49:16 · 615 阅读 · 0 评论 -
插入排序
1、算法原理 插入排序是最简单的一种排序算法。插入排序由N-1趟排序组成。对于P=1趟到P=N-1趟,插入排序保证从位置0到位置P上的元素为已排序状态。插入排序利用了这样的事实:位置0到位置P-1上的元素是已排序的。 2、代码(C版) /*+++++++++++++++++++++++++++++++++++++++++++++ + 插入排序(C版) + + +author:zh原创 2013-04-14 16:53:38 · 448 阅读 · 0 评论 -
走迷宫2(深度优先)
1、走迷宫深度优先算法原理 对于图的遍历有主要有两种比较经典的算法,广度和深度优先遍历,广度优先遍历的关键在与构建 遍历图的一队列。具体的深度的原理,一般算法分析的书籍上面都有详细的说明,简单的来说就是,深度 优先就是沿着一个方向一直走下去,如果找到出口则输出路径,如果没有找到则回退回来继续下一路劲,所以对图的深度搜索用栈存储就够比较方便。 2、具体的代码 代码是对一个5*6的图进行原创 2013-04-14 09:10:16 · 1103 阅读 · 0 评论 -
走迷宫1(广度优先)
1、走迷宫广度优先算法原理 对于图的遍历有主要有两种比较经典的算法,广度和深度优先遍历,广度优先遍历的关键在与构建 遍历图的一队列。具体的广度的原理,一般算法分析的书籍上面都有详细的说明,简单的来说就是,广度 优先就是先对图中一个点的周围的相邻的点都处理完了之后,在依次处理周边的点,所以对图的广度搜索 用队列存储就够比较方便。深度自然用栈比较好。深度的遍历的代码在其他的两篇博客中: (1原创 2013-04-14 09:08:56 · 979 阅读 · 0 评论 -
走迷宫21(深度优先改进)
/*+++++++++++++++++++++++++++++++ + 走迷宫21(C改进版) + + 深度遍历算法,输出所有路经。 +主要思想用栈,(用list栈代替)。 +author:zhouyongxyz 2013-4-14 9:00 ++++++++++++++++++++++++++++++++++++++++++*/ #include #include #include u原创 2013-04-14 09:11:31 · 694 阅读 · 0 评论 -
拼图游戏C++程序改进
1、前一篇介绍的C++程序确实存在问题,我原创 2014-08-18 11:14:01 · 1106 阅读 · 0 评论