随笔分类 -  算法基础

算法经典问题
摘要:声明:本文参考链接:STL::sort实现。 排序是面试中经常被问及的算法基础知识点,虽然实际应用中不会直接使用,但是理解这些简单的算法知识对于更复杂更实用的算法有一定的帮助,毕竟面试总不能问的太过深入,那么这些知识点就显得很重要了。我们在程序中经常利用sort给序列排序,那么你知道它是什么实现的吗 阅读全文
posted @ 2018-04-01 01:06 AlvinZH 阅读(3968) 评论(2) 推荐(4)
摘要:本文转自: "十大经典排序算法" ,其中有动图+代码详解,本文简单介绍+个人理解。 排序算法 经典的算法问题,也是面试过程中经常被问到的问题。排序算法简单分类如下: 这些排序算法的时间复杂度等参数如下: 其中,n代表数据规模,k代表桶的个数,In place代表不需要额外空间,Out place代表 阅读全文
posted @ 2018-03-30 18:06 AlvinZH 阅读(5669) 评论(0) 推荐(0)
摘要:前言:斐波那契作为一个算法基础知识,大家一定要掌握,祝大家学得开心~ 什么是斐波那契数列(Fibonacci sequence)? 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故 阅读全文
posted @ 2017-10-08 13:09 AlvinZH 阅读(4627) 评论(0) 推荐(3)
摘要:问题引入 以前一直认为二者是一样的,今天突然发现他们还是有很大的不同的。例如char *a = "abc"和char b[] = "abc",当我使用strcat(b,a)时得到的b是二者的结合,当我使用strcat(a,b)时系统报错。也就是说前者改变其内容程序是会崩溃的,而后者完全正确。 预备知 阅读全文
posted @ 2017-05-05 23:56 AlvinZH 阅读(1135) 评论(0) 推荐(0)
摘要:什么是最小生成树(MST)? 给定一个带权的无向连通图,选取一棵生成树(原图的极小连通子图),使生成树上所有边上权的总和为最小,称为该图的最小生成树。 求解最小生成树的算法一般有这两种:Prim算法和Kruskal算法。 Prim算法(普里姆算法) 图的存贮结构采用邻接矩阵。此方法是按各个顶点连通的 阅读全文
posted @ 2017-05-03 20:23 AlvinZH 阅读(1083) 评论(0) 推荐(0)
摘要:什么是并查集? 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。 使用并查集时,首先会存在一组 阅读全文
posted @ 2017-05-03 11:01 AlvinZH 阅读(682) 评论(0) 推荐(0)
摘要:什么是最大连续子序列和问题? 问题描述:给定一个序列(整数或浮点数),求出其中连续的子序列和最大的那一个。 例:序列{-10 1 2 3 4 -5 -23 3 7 -21},其最大的连续子序列为{1 2 3 4}或{3 7},最大和为10. 方法一:暴力求解 最最普通的方法,效率十分低,一般不会用到 阅读全文
posted @ 2017-05-02 13:14 AlvinZH 阅读(17640) 评论(0) 推荐(3)
摘要:什么是最短路径问题? 简单来讲,就是用于计算一个节点到其他所有节点的最短路径。 单源最短路算法:已知起点,求到达其他点的最短路径。 常用算法:Dijkstra算法、Bellman-ford算法、SPFA算法 多源最短路算法:求任意两点之间的最短路径。 常用算法:floyd算法 单源最短路径——Dij 阅读全文
posted @ 2017-04-30 17:27 AlvinZH 阅读(11765) 评论(0) 推荐(1)
摘要:1.sort 使用:#include <algorithm> using namespace std; 作用:排序 时间复杂度:n*lg(n) 实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的排序方法 阅读全文
posted @ 2017-04-29 11:56 AlvinZH 阅读(85410) 评论(3) 推荐(15)