算法学习
文章平均质量分 82
apprentice_eye
Talk is cheap,show me the code.
展开
-
学习笔记:计算机算法设计与分析第一章
算法是指解决问题的一种方法或一种过程。更严格的讲,算法是由若干条指令组成的有穷序列。算法具有以下四种性质:1.输入:有零个或多个由外部提供的量作为算法的输入。2.输出:算法产生至少一个量作为输出。3.确定性 :组成算法的每一条指令是清晰的,无歧义的。4.有限性:算法中每条指令执行的次数是有限的,执行每条指令的时间也是有限的。程序和算法不同,程序是算法的具体实现,程序可以不满足算法的性质4,如操作系统是在一个无限循环中执行的程序。原创 2024-05-06 13:24:42 · 531 阅读 · 0 评论 -
排序算法:希尔排序
在实现希尔排序的过程中,我们需要先对整个序列进行分组,然后组内进行插入排序,这样可以将元素快速的移动到大致所在的位置,然后不断减少分组的步长,最后对整个序列进行插入排序,因为此前已经将元素大跨步的移动到大致所在的位置,所以最后进行的插入排序进行比较的次数也会减小。整个序列就排序完毕,这就是希尔排序的大致流程,总体思路为先大致确定元素所在的位置,再精确确定元素的位置。一个致力于让知识变的易懂的博主。原创 2024-01-06 22:33:43 · 635 阅读 · 0 评论 -
数据结构:树详解
下面我们来进行实现二叉树的前序遍历、中序遍历与后序遍历,前序遍历是指先根结点再左子树最后右子树,中序遍历是先左子树然后根结点最后右子树,后序遍历是先左子树然后右子树最后根结点,这种遍历可以通过递归进行实现,在每次递归中所在结点不为NULL就说明结点有值,我们需要遍历这一个结点的左子树与右子树,也就是递归截至的条件是root==NULL;可以看出这两棵树是等价的,只不过是左右孩子交换了下顺序,也就是说明了程序是正确的。就以上面的建立的二叉树为例查看一下该二叉树的前序遍历序列、中序遍历序列、后序遍历序列。原创 2024-01-06 22:14:51 · 1103 阅读 · 0 评论 -
数据结构:图详解
首先先创建图,这一个我们可以使用邻接矩阵或者邻接链表来进行存储,我们要实现的无向图的创建,我们先创建一个矩阵尺寸为n*n,n为图中的节点个数如图所示可以看出图中有5个结点,那我们创建的邻接矩阵的大小就是5*5大小的其中第一行就是存储的结点1与其他各个结点的关系,因为我们建立的是无权图,所以对于两个结点之间有边我们就存储1,无边就存储0。则上述图的邻接矩阵可以表示为邻接矩阵表示了图中结点之间是否有边相连,并没有存储结点的信息,所以我们还需要一个长为n的数组进行结点信息的存储。原创 2024-01-05 23:06:09 · 1512 阅读 · 2 评论 -
栈和队列详解
这样关于栈的三个功能就都完成了,对于顺序栈来说,栈满的扩充是比较耗时的,因为他需要将原来栈中的元素都进行复制,这是比较耗时的。原创 2024-01-02 12:18:10 · 828 阅读 · 0 评论 -
字符串的模式匹配:kmp算法
这一次我们来讲解kmp算法,这是一种更高效的算法,但是很多人就会疑问了,这个算法还是比较困难的你能讲好?面对你们的这些疑问,我只能说。原创 2023-10-19 22:29:16 · 91 阅读 · 0 评论 -
字符串的模式匹配:BF算法
也就是说,我们要让串T与串S进行模式匹配,其实就是找一段S串中的子序列,这个子序列中的字符与串T对应相等,但是我们并不知道这一个子序列从哪里开始,甚至我们都不知道是否存在这样一个子序列。当所有的字符都匹配上了,我们就说在T串是S串的一个子串,其中有一个环节没有匹配上,那么就说明要么首字符没有匹配上要么中间字符没有匹配上,那么我们就说T串不是S串的一个子串。其中T串的长度小于等于S串(否则的话T串不可能是S的子串),如果T串是S串的一个子串,那么在S串中一定存在这样一个串。原创 2023-10-08 23:24:14 · 162 阅读 · 0 评论