常用算法
文章平均质量分 88
Zinc_Axin
这个作者很懒,什么都没留下…
展开
-
排序算法----归并排序
排序算法,归并排序原创 2022-06-08 16:37:26 · 242 阅读 · 2 评论 -
排序算法----插入排序和希尔排序
假设有这么一个数组:int Array[20] = {15, 3, 6, 8, 2 ,11 ,12 ,19 ,1 ,7 ,17 ,20 ,4 ,13 ,18 ,10 ,5 ,16 ,14 ,9};如下的柱状图,Index表示数组的下标,Value表示数组下表对应元素的值,即Array[0] = 15, Array[1] = 3, Array[2] = 6 , ……插入法排序:我们通常整理扑克牌的时候,习惯按照某个顺序(升序或者降序)。当抓牌的过程中正是按照顺序一张一张插入到已经排好的..原创 2021-04-28 17:58:58 · 307 阅读 · 2 评论 -
广度搜索的应用实例
假设下图是中国传统的象棋棋盘的一部分:在象棋中,“馬”走“日”的规则,如上图,一同是以上8个方向,红色的旗子是“馬”要攻击的对象,请找出攻击的最短路径的步数下面2个箭头所指的路径都是到达红色目标的路径(当然也许并不是最短路径)要求输入:M, N //M代表一共有多少行,N代表一共有多少列StartX SrartY EndX EndY例如:9 9原创 2015-08-01 02:20:47 · 679 阅读 · 0 评论 -
生长树模型
有这么一颗树,按照一定的规则进行成长:1) F : 表示在原来的方向的基础上水平生长,即在原来的方向的基础上画一横2) + : 增加45度3) - : 减小45度4) [ : 记录该节点末的当前状态,下次变化从该节点末开始(相当于压入堆栈push操作)5) ] : 从上次记录的节点末恢复操作(相当于出栈操作pop)原创 2015-07-31 23:01:11 · 1342 阅读 · 0 评论 -
深度搜索的应用----环路最小路径
环路最小路径问题:就是熟称的旅行者问题,也叫TSP算法。假设有五个城市A,B,C,D,E。如果旅行者从A城市出发,历经其它各个城市,最终又回到A城市,且其中每个城市只能经过一次。求环路中最短的路径就是所谓的旅行者问题。我们依旧可以采取DFS的算法解决该问题。本题的思路是利用深度搜索进行穷举,把所有的路径都走一次,找到一个最短的路径。当然中途可以剪支。要求输入,例如:5原创 2015-08-24 14:58:25 · 1071 阅读 · 0 评论 -
深度搜索的应用----无向图的连通性
题目:有这么一个无向图,如下:请找出这个图中的关键节点。关键节点的意思就是:如果去掉某一个点,剩余其它所有的点都不能连接在一起,则该节点就成为关键节点。如去掉节点3,如下图:去掉节点3以后,很明显所有的节点并不能完全连接,那么节点3就是这个无向图中的一个关键节点。如果去掉节点6,如下图所示:去掉节点6以后,很明显所有的节点依然可以完全连接原创 2015-07-16 02:30:25 · 770 阅读 · 0 评论 -
深度搜索的应用----有向图的连通性
有向图的连通性,首先看一下下面2个图,在图1 中A->B-C->A,那么我们就说这个有向图存在环路。在图2中A->B->C, A->C,无法形成一个环路,则称A,B,C三点不存在环路 图1原创 2015-07-23 18:49:05 · 3896 阅读 · 0 评论 -
典型的递归算法
原题:一个完整的纸板有N*N个小纸板组成N×N (N = 2^K; 1 ≤ K ≤ 7; K =自然数),纸板上一共有2种颜色,1----蓝色,0----白色如下图所示: 需要按照如下的规则进行切割:1. 如果一张完整的纸板的颜色完全相同了,就不用再进行切割,如果颜色一致:全是蓝色纸板的颜色,蓝色纸板总数加1,如果是白色的话,白色纸板的总数加12. 如果不是同一个颜原创 2015-07-14 01:24:45 · 490 阅读 · 0 评论 -
迷宫算法(一)
迷宫算法的基本解题思路就是:递归算法分析:走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题,请直接看程式应就可以理解。用1代表墙壁,0代笔路径。1----wall;0----path注:当走过该店后,也置为1,表示已经走过了,不能再走该点。翻译 2015-07-05 23:10:23 · 996 阅读 · 0 评论 -
迷宫算法(二)
接着上一个迷宫算法,我们进一步求解----寻找迷宫中从起点到结束点的步数:如下图所示的矩阵,可以看出一共有4条路径从入口到出口:1. 紫色背景的路径2. 绿色背景的路径3. 绿色背景和紫色背景交互产生的2条路径。翻译 2015-07-13 14:07:50 · 529 阅读 · 0 评论 -
开灯问题
有N盏灯,编号为1~N。第一个人把所有的等打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推,一共有K个人,问最后有哪些灯开着?输入N和K,输出开着的灯的编号。K。样例输入:7 3样例输入:1 5 6 7分析:1. 从题意可得最多有1000盏灯,所以翻译 2015-07-05 01:10:01 · 603 阅读 · 0 评论