随笔分类 -  17:algorithm--算法

单链表、双向链表、栈、队列、树、图、搜索、排序
25*:排序算法:总结 (1、冒泡排序:2:选择排序:3、插入排序:4、希尔排序:5、堆排序:6、归并排序:7、快速排序:)
摘要:问题 目录 1、冒泡排序:未排序区间两两交换找到最大值,排在最后,形成有序区间。稳定 2:选择排序:从未排序区间找最小元素,和排序区间的最后一个元素交换位置。 3、插入排序:从未排序区间依次取出元素插入到排序区间的适当位置。稳定 4、希尔排序:缩小增量排序 5、堆排序:完全二叉树大堆顶,交互堆顶和最 阅读全文

posted @ 2020-12-16 20:18 风zk 阅读(257) 评论(0) 推荐(0) 编辑

24*:排序算法7:快速排序(分区值,分而治之)
摘要:问题 目录 预备 快排利用了分治的思想,分而治之,分治算法的基本思想是将一个规模为N的问题,分解成K个规模较小的子问题,这些子问题相互独立且问题性质相同。 求解出子问题的解,合并得到原问题的解。拆分问题总不可能手脚并用一个个拆分,因此分治算法大多采用递归实现。 正文 快速排序 1:算法描述 对A[p 阅读全文

posted @ 2020-12-16 19:07 风zk 阅读(318) 评论(0) 推荐(0) 编辑

23*:排序算法6:归并排序(两两分而治之。稳定)
摘要:问题 目录 预备 冒泡,选择和插入排序,它们的时间复杂度都是O(n2),比较高,适合小规模数据的排序;希尔排序和快速排序都不稳定,这篇我们来说说稳定的归并排序。归并排序在数据量大且数据递增或递减连续性好的情况下,效率比较高,且是O(nlogn)复杂度下唯一一个稳定的排序,致命缺点就是空间复杂度O(n 阅读全文

posted @ 2020-12-16 19:05 风zk 阅读(784) 评论(0) 推荐(0) 编辑

22*:排序算法5:堆排序(完全二叉树大堆顶,交互堆顶和最后元素,找到最大元素。递归依次排序。)
摘要:问题 目录 预备 正文 一:什么是堆? 1:定义 堆(英语:Heap)是计算机科学中的一种特别的完全二叉树,满足特性"给定堆中任意节点P和C,若P是C的母节点,那么P的值会小于等于(或大于等于)C的值"。 摘自维基百科。 首先堆是一个完全二叉树(除了最后一层,其他层的节点个数都是满的,最后一层的节点 阅读全文

posted @ 2020-12-16 17:57 风zk 阅读(262) 评论(0) 推荐(0) 编辑

21*:排序算法4:希尔排序(缩小增量排序)
摘要:问题 //起始间隔值gap设置为总数的一半,直到gap==1结束 -(void)shellSort:(NSMutableArray *)list{ int gap = (int)list.count / 2; while (gap >= 1) { for(int i = gap ; i < [lis 阅读全文

posted @ 2020-12-16 16:49 风zk 阅读(198) 评论(0) 推荐(0) 编辑

20*:排序算法3:插入排序(从未排序区间依次取出元素插入到排序区间的适当位置。稳定)
摘要:问题 -(void)insertSequence:(NSMutableArray *)arr { for (int i = 1; i<arr.count; i++) { int a=[arr[i] intValue]; int k = i; while (k>0&&[arr[k] intValue] 阅读全文

posted @ 2020-12-16 16:23 风zk 阅读(155) 评论(0) 推荐(0) 编辑

19*:排序算法2:选择排序(从未排序区间找最小元素,和排序区间的最后一个元素交换位置。)
摘要:问题 - (void)selectionAscendingOrderSortWithArray:(NSMutableArray *)ascendingArr { int index = 0;//记录找到的关键字下标 for (int i = 0; i < arr.count - 1; i++) { 阅读全文

posted @ 2020-12-12 20:19 风zk 阅读(225) 评论(0) 推荐(0) 编辑

18*:排序算法1:冒泡和优化(未排序区间两两交换找到最大值,排在最后,形成有序区间。稳定)
摘要:问题 -(void)bubbleSequence:(NSMutableArray *)arr {//优化后算法-从第一个开始排序,空间复杂度相对更大一点 for (int i = 0; i < arr.count; ++i) { bool flag=false; //遍历数组的每一个`索引`(不包括 阅读全文

posted @ 2020-12-12 20:18 风zk 阅读(178) 评论(0) 推荐(0) 编辑

17*:查找专题之平衡二叉树以及散列查找技术
摘要:问题 平衡二叉树 散列查找技术 目录 平衡二叉树 散列查找技术 预备 正文 一:平衡二叉树 1:定义 平衡⼆叉树 平衡⼆叉树(Self-Balancing Binary Search Tree或Height-Balanced Binary Search Tree),是⼀ 种二叉排序树.其中每一个结点 阅读全文

posted @ 2020-12-12 20:17 风zk 阅读(232) 评论(0) 推荐(0) 编辑

16*:查找专题静态查找以及二叉搜索树的实现:(顺序查找、折半查找、插值查找、斐波那契查找)、(二叉排序树)
摘要:问题 (顺序查找、折半查找、插值查找、斐波那契查找)、(二叉排序树) 目录 1:定义 2:顺序查找、折半查找、插值查找、斐波那契查找 3:二叉排序树 预备 正文 一:定义 查找(Searching) 就是根据给定的某个值,在査找表中确定一个其关键字等于给定值的数据元素 查找表(Search Tabl 阅读全文

posted @ 2020-12-12 20:16 风zk 阅读(253) 评论(0) 推荐(0) 编辑

15*:图的应用(拓扑排序和关键路径问题)(1:拓扑排序 2:关键路径 )
摘要:问题 目录 1:拓扑排序 2:关键路径 预备 正文 1:拓扑排序介绍 我们会把施工过程、生产流程、软件开发、教学安排等都当成一个项目工程来对待,所有的工程都可分为若干个“活动”的子工程。例如下图一张简陋的电影制作流程图,现实中可能并不完全相同,但基本表达了一个工程和若干个活动的概念。在这些活动之间, 阅读全文

posted @ 2020-12-12 20:14 风zk 阅读(397) 评论(0) 推荐(0) 编辑

00*:算法目录
摘要:逻辑教育_优秀学员作业(博客) 小魔女阿甘 https://juejin.cn/user/114004941868264/posts 1: 李林竹 https://www.yuque.com/lilinzhu/mauona 2: joker_kinG https://juejin.cn/user/3 阅读全文

posted @ 2020-12-07 01:06 风zk 阅读(5346) 评论(0) 推荐(0) 编辑

14*:图的应用(最短路径问题):(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)
摘要:问题 迪杰斯特拉(Dijkstra)算法 /*用于存储最短路径下标的数组*/ typedef int Patharc[MAXVEX]; /*用于存储到各点最短路径权值的和*/ typedef int ShortPathTable[MAXVEX]; 弗洛伊德(Floyd)算法 //Patharc 父节 阅读全文

posted @ 2020-12-05 11:49 风zk 阅读(481) 评论(0) 推荐(0) 编辑

13*:图的应用:最小生成树普里姆(Prim)算法、克鲁斯卡尔(Kruskal)算法:(通图生成树、设计一个最小成本的⽹网络布线路线、最小生成树普里姆(Prim)算法、克鲁斯卡尔(Kruskal)算法)
摘要:问题 1:普里姆(Prim)算法 typedef struct { int arc[MAXVEX][MAXVEX]; int numVertexes, numEdges; }MGraph; 2:克鲁斯卡尔(Kruskal)算法 typedef struct { int arc[MAXVEX][MAX 阅读全文

posted @ 2020-12-05 11:48 风zk 阅读(397) 评论(0) 推荐(0) 编辑

12*:图结构初探:(邻接矩阵顺序存储、邻接表链式存储)(邻接矩阵和邻接表以及深度与广度优先遍历)
摘要:问题 目录 1:图 2:邻接矩阵顺序存储、 3:邻接表链式存储 4:邻接矩阵和邻接表、及深度与广度优先遍历 预备 正文 一:图 1:图的简介 图(Graph)结构是一种非线性的数据结构,图在实际生活中有很多例子,比如交通运输网,地铁网络,社交网络,计算机中的状态执行(自动机)等等都可以抽象成图结构。 阅读全文

posted @ 2020-12-05 11:47 风zk 阅读(423) 评论(0) 推荐(0) 编辑

11*:线索化二叉树和⼆叉树的应⽤-哈夫曼编码(线索二叉树,等于是把一棵二叉树转变成了一个双向链表)(线索化二叉树利用二叉树的空链指针,使每个结点都有了唯一前驱和后继,把非线性结构转换为线性结构。)
摘要:问题 1:线索化二叉树 /* 线索二叉树存储结点结构*/ typedef struct BiThrNode{ //数据 CElemType data; //左右孩子指针 struct BiThrNode *lchild,*rchild; //左右标记 PointerTag LTag; Pointer 阅读全文

posted @ 2020-12-05 11:46 风zk 阅读(541) 评论(0) 推荐(0) 编辑

10*:二叉树初探:(定义、二叉树、二叉树的4种遍历方法)(二叉数顺序存储、二叉数链式存储)
摘要:问题 目录 1:树(定义、二叉树、二叉树的4种遍历方法) 2:二叉数顺序存储 3:二叉数链式存储 预备 正文 一:树 树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。 1:定义 树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1)有且仅有一个特定的称为根( 阅读全文

posted @ 2020-12-05 11:45 风zk 阅读(360) 评论(0) 推荐(0) 编辑

09*:字符串匹配算法KMP算法:(主要是需要理解KMP中next数组求解的必要性以及j 的回溯依据;)(回溯j 值的多少取决于当前字符之前的串前后缀相似度;)
摘要:问题 目录 1:什么是KMP 2:KMP算法原理 预备 正文 1:什么是KMP KMP算法是在字符串匹配算法中比较绕的.主要是需要理解KMP中next数组求解的必要性以及j 的回溯依据; KMP 算法 是由 D.E.Knuth,J.H.Mores 和 VR.Pratt共同发表模式匹配算法,称之克鲁特 阅读全文

posted @ 2020-12-05 11:44 风zk 阅读(465) 评论(0) 推荐(0) 编辑

08*:字符串匹配算法:BF算法与RK算法(RK算法主要的解决思路就是在BF算法的基础上,将子串转换成哈希值来进行比较,它算是BF算法的升级版。)
摘要:问题 字符串匹配问题: 给你⼀个仅包含⼩写字⺟的字符串主串S = "abcacabdc",和模式串T = "abd", 请查找出模式串在主串第 ⼀次出现的位置; 提示: 主串和模式串均为⼩写字⺟且都是合法输⼊。 目录 1:BF算法-暴风匹配算法 2:RK算法 3:去除重复字母 预备 正文 1:BF算 阅读全文

posted @ 2020-12-05 11:43 风zk 阅读(556) 评论(0) 推荐(0) 编辑

07:栈思想下相关算法题解析
摘要:问题 目录 预备 正文 1 注意 1 引用 1: 2: 3: 4: 5: 阅读全文

posted @ 2020-12-05 11:42 风zk 阅读(57) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示