数据吗结构和算法
文章平均质量分 60
Vict-Lee
Stay hungry,stay foolish.
展开
-
二分查找
二分法,一种用于查找的方法,输入一个有序序列,从中间位置开始,判断跟要查找数据的关系,相等则得到结果,若大于或小于,则在可能的一半数据中继续查找,仍然从另一半的中间位置继续查找,如此循环,直到找到要找的元素。 (1)输入序列必须是有序的,因为在后续的查找过程中,需要用到大小关系来确定继续查找的范围; (2)当总元素个数为n,最坏情况下,二分法的之间复杂度为O(logN), 比如n=8,则最多需要三步就能找到; 代码实现:https://github.com/Victcode/Algorit..原创 2021-01-04 23:27:11 · 151 阅读 · 0 评论 -
贪婪算法
1、NP完全问题 贪婪算法是一种近似算法,近似算法不能保证最后求得的解是最优解,所以近似算法适用于很难求得最优解的问题,这种问题就是NP完全问题。 先举两个典型的NP完全问题。 问题1,集合覆盖问题。有m个电台,每个电台能覆盖p个州,共有n个州,从m个电台中能覆盖全部州的最小集合。要解这个问题要列出电台的所有组合,然后找出能同时覆盖n个州的最小组合,那一种有多少种组合呢,一共有2的m次幂个。数量非常大。 问题2,旅行商问题。旅行商要去n个城市,想要找出怎么能让访问n个城市的路途最短。怎么让路途变短,原创 2021-01-04 23:24:37 · 547 阅读 · 0 评论 -
散列表
什么是散列表 散列表也叫哈希表,输入某一关键字输出其对应的数值的数据结构 散列表的生成依赖于散列函数,散列函数的要满足如下特性: (1)每次输入相同的关键字,输出的数字要相同; (2)不同的关键字要映射到不同的数字上,如果输入不同的关键字却得到了相同的输出数字,那么就不是一个好的散列函数; 散列表的问题 在创建散列表的时候会发生冲突,即将不同的关键字映射到相同的位置。 一种简单的解决方式是,当不同的关键字映射到了同一个位置,就在这里用一个链表。 这样导致的问题是散列表在查..原创 2021-01-03 13:36:32 · 172 阅读 · 0 评论 -
图及其遍历
什么是图 图由点和边组成。 边上有箭头叫有向图,没箭头叫无向图。 边上的数值叫做权重,有权重的图叫有权图。 有环形回路的图叫做有环图。 图用于模拟不同的东西是如何连接的。 图的表示 图的表示方式先确定好,这关系到之后在实现遍历算法的时候如何访问图上的节点和权重等信息。 两种表示方式:邻接矩阵、邻接表 以表示下面的图为例,下图是一个带权值的有向图,顶点为:V0-V5,边上的数值为权重 (1)邻接矩阵 (2)连接表,在图特别系数的情况下,链接表更有效 邻接矩阵比较容易理解原创 2021-01-03 13:06:21 · 492 阅读 · 0 评论 -
最短路径算法
两种最短路径算法:Dijkstra和Bellman Dijkstra 问题:在一张图中,从一点出发到大其他个点的最短路径。 思路:假设a到b之前的直达路径是10,如果求a到b的最短路径,就需要抄近路,比如加个c,a->c->b,看这条路径是不是比10小。 然后是这个c怎么选择。如下图,求取顶点1到其它顶点的最短路径。 除去1,还有五个顶点,先列出1到其它顶点的距离,在不经过其它顶点的情况下的距离,无法直达的用正无穷表示,这里用00代替,可以得到一个距离数组distant={0, 1,原创 2021-01-03 01:01:44 · 374 阅读 · 0 评论