随笔分类 -  数据结构与常用算法

记录用C语言实现的一些常用算法
摘要:试题1:将一整数逆序后放入一组数组,要求递归实现。 代码实现: 实现结果: 试题2:求高于平均分的学生学号及成绩,学号和成绩人工输入。 代码实现: 试题3:递归实现回文判断,例如a-b-c-d-e-d-c-b-a就是回文,这是判断一个面试者对递归理解的简单程序。 代码实现: 试题4:从M个不同字符串 阅读全文

posted @ 2018-11-16 19:33 时光top 阅读(3047) 评论(0) 推荐(0) 编辑 |

摘要:数据结构之图的主要内容包括: (1)相关概念 · (2)存储结构 (3)遍历图 (4)图的连通性 (5)寻求最短路径 参考学习:https://blog.csdn.net/qq_35644234/article/details/57083107 http://blog.chinaunix.net/u 阅读全文

posted @ 2018-11-04 21:08 时光top 阅读(113) 评论(0) 推荐(0) 编辑 |

摘要:引言: SVM是一种常见的分类器,在很长一段时间起到了统治地位。而目前来讲SVM依然是一种非常好用的分类器,在处理少量数据的时候有非常出色的表现。SVM是一个非常常见的分类器,在真正了解他的原理之前我们多多少少都有接触过他。本文将会详细的介绍SVM的原理、目标以及计算过程和算法步骤。我们针对线性可分 阅读全文

posted @ 2018-11-01 12:58 时光top 阅读(229) 评论(0) 推荐(0) 编辑 |

摘要:一、树的概念 在计算机领域中,树是一种很常见的数据结构之一,这是一种非线性的数据结构。相关的概念较多,在此就不一一介绍了。 二、二叉树 (1)二叉树的定义 二叉树是指每个节点最多有两个子树的有序树,通常将其子树的根分别称作“左子树”和“右子树”(Right Subtree)。 二叉树的主要特点: 不 阅读全文

posted @ 2018-10-29 19:19 时光top 阅读(187) 评论(0) 推荐(0) 编辑 |

摘要:一、栈的定义 栈是一种特殊的线性表,允许在同一端进行插入和删除操作,遵循“先进后出”的原则。 栈的基本操作:入栈(Push)、出栈(Pop)。 二、栈的分类 栈可以分为:顺序栈和链栈。 (1)顺序栈 顺序栈是栈的顺序存储结构的简称,它是一个运算受限的顺序表。 使用C语言定义顺序栈类型的格式。 初始化 阅读全文

posted @ 2018-10-28 21:33 时光top 阅读(356) 评论(0) 推荐(0) 编辑 |

摘要:一、队列的概念 队列是一种特殊的线性表,严格按照“先进先出”的原则。 二、队列基础 队列和栈一样只允许在断点处插入和删除元素,其基本操作包括以下: (1)InitQueue(&Q); //初始化一个空队列 (2)DestroyQueue(&Q); //清空队列 (3)QueueEmpty(&Q); 阅读全文

posted @ 2018-10-28 16:35 时光top 阅读(489) 评论(0) 推荐(0) 编辑 |

摘要:一、线性表的特性 1、线性结构的特性 (1)集合中必存在唯一的“第一元素”和唯一的“最后元素”。 (2)除最后一个元素之外,均有唯一的后继和唯一的前驱。 2、线性表的基本操作过程 (1)用 Setnull(L)置空表; (2)用Length(L)求表的长度和表中各元素的个数; (3)用Get(L,i 阅读全文

posted @ 2018-10-27 15:09 时光top 阅读(319) 评论(0) 推荐(0) 编辑 |

摘要:本文是对数据结构的总体内容进行总结,详细内容在后续文章中将有介绍。 一、3种基本的数据结构 (1)线性结构:数据元素之间是 一对一关系,如线性表(链表)、队列、栈。 (2)树形结构:数据元素之间是一对多关系,如二叉树、哈夫曼树。 (3)网状结构:数据元素之间是多对多关系,如图。 二、线性结构 (1) 阅读全文

posted @ 2018-10-27 11:15 时光top 阅读(520) 评论(0) 推荐(0) 编辑 |

摘要:一·模拟算法的思想 解决模拟问题,需要仔细分析题目给出的规则,要尽可能地做到全面考虑所有可能出现的情况,这是解决模拟问题的关键点之一。 二·实例演练 `猜数字游戏`问题 代码实现: 实现结果: 阅读全文

posted @ 2018-10-26 10:42 时光top 阅读(210) 评论(0) 推荐(0) 编辑 |

摘要:一·迭代算法的思想 迭代算法在使用过程需要做好如下3方面的工作:(1)确定迭代变量(2)建立迭代关系(3)对迭代过程的控制 二·实例演练 `求平方根`问题 代码实现: 实现结果: 三·总结 递归是自顶向下运算,是在函数内部调用自身,而迭代是循环求值。 阅读全文

posted @ 2018-10-26 10:34 时光top 阅读(373) 评论(0) 推荐(0) 编辑 |

摘要:一、试探法算法的思想 试探法也叫回溯法,试探法的处事方式比较委婉,它先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一进行枚举和检验。使用试探法的步骤如下: (1)针对所给问题,定义问题的解空间。(2)确定易于搜索的解空间结构。(3)以深度优先方式搜索空间,并在搜索过程中用剪枝函数避免 阅读全文

posted @ 2018-10-26 09:21 时光top 阅读(709) 评论(0) 推荐(0) 编辑 |

摘要:一、贪心算法的思想 贪心算法也称贪婪算法,此算法思想不从整体最优上考虑问题,仅是在某种意义上的局部最优求解。由此可见贪心算法只是追求某范围内的最优,可以将其称之为“温柔的贪婪”。 贪心算法存在的问题: (1)不能保证最后的解是最优的;(2)不能用来求最大或最小解的问题;(3)只能求满足某些约束条件的 阅读全文

posted @ 2018-10-25 19:51 时光top 阅读(334) 评论(0) 推荐(0) 编辑 |

摘要:一、分治算法的思想 将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同,只要解决子问题,就可得到原问题的解。 二、分治算法的解题过程 (1)分解,将要解决的问题划分成若干个规模较小的同类问题。 (2)求解,当子问题划分到足够小时,用简单的方法解决。 (3)合并,按原 阅读全文

posted @ 2018-10-25 16:51 时光top 阅读(264) 评论(0) 推荐(0) 编辑 |

摘要:一、递推算法的思想 有事不求人,遇到困难自己解决,即使难以解决也要硬着头皮去解决。 二、递归算法的特点 (1)递归过程一般通过函数或子过程来实现。 (2)递归算法在函数或子过程的内部,直接或间接地调用自己的算法。 (3)递归算法实际上是把问题转化为规模缩小的同类子问题,然后再递归调用函数或过程来表示 阅读全文

posted @ 2018-10-25 14:41 时光top 阅读(152) 评论(0) 推荐(0) 编辑 |

摘要:一、递推算法思想 利用已知条件,逐步递推,直到得到结果为止。两种递推算法:顺推法、逆推法。 二、实例演练 (1)兔子繁殖问题。 代码实现: 实现结果: (2)银行存款问题 代码实现: 实现结果: 阅读全文

posted @ 2018-10-25 14:10 时光top 阅读(307) 评论(0) 推荐(0) 编辑 |

摘要:枚举即一一列举。 一、枚举算法的思想 将问题所有的可能答案一一列举,然后根据实际情况选择合适而丢弃不合适的。在c语言中,枚举算法一般使用while循环实现。 二、实例演练 (1)“百钱买百鸡”问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何? 代码实现: 实现结 阅读全文

posted @ 2018-10-24 22:29 时光top 阅读(211) 评论(0) 推荐(0) 编辑 |

摘要:八大常见的算法: 枚举算法 递推算法 递归算法 分治算法 贪心算法 试探算法 迭代算法 模拟算法 在后续文章中会一一讲述,并列举一些实例。 阅读全文

posted @ 2018-10-24 21:46 时光top 阅读(231) 评论(0) 推荐(0) 编辑 |

Copyright © 2024 时光top
Powered by .NET 8.0 on Kubernetes