![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构算法基础
Cassie会西
这个作者很懒,什么都没留下…
展开
-
算法的时间复杂度和空间复杂度
算法的时间复杂度指算法运行所需要的时间,空间复杂度指的是算法所需要的内存空间。一、时间复杂度算法的时间复杂度是一个函数,用大写字母O来表示,它描述的是数据量的增长导致的时间增长情况。例如O(2n)和O(n)是相同类型的时间复杂度,因为在数据量增加一倍的时候,时间开销都是增长一倍(线性增长)的。O(n^2)和O(n)是不同类型的时间复杂度,因为扩大一倍,前者时间消耗扩大四倍。且随着数据量的增长,...原创 2019-07-08 10:12:23 · 1580 阅读 · 0 评论 -
基本线性数据结构
基本线性数据结构包括:线性表,栈和队列。一、线性表线性表中数据元素是一对一的关系线性表的实现方法分为两种:数组和链表1.数组实现线性表数组是线性表的循序存储的实现方式,可以通过对数组的操作实现对线性表的各种操作。数组的主要操作有:值查询(search)、前端插入(push_front)、后端插入(push_back)、节点删除(delete)、下标查找(find)和插入(Insert...原创 2019-07-08 13:25:32 · 413 阅读 · 0 评论 -
基本算法设计
主要介绍七种基本的算法基础设计1.枚举2.递推3.递归3.贪心算法5.分治算法6.哈希7.二分法1.枚举枚举算法是指从可能的解集中一一列举出各个元素,用题目给定的约束条件判断哪些是满足题目条件的,哪些是不满足条件的,满足条件的即为可行解。枚举算法分为两步:1)确定解的范围,并逐一列举其中的元素;2)对列举每一个可能的解进行检验。2.递推谈到递推,我们很容易联想到高中数学里...原创 2019-07-09 11:31:57 · 493 阅读 · 0 评论 -
基本的排序算法
一、基于比较的排序算法定理1:基于比较的排序,时间复杂度下界为O(nlog2 n).证明:对于n个排序元素,在没比较时,可能的正确结果有n!种。经过一次比较后,其中两个元素的顺序被确定,所以可能的正确结果剩余n!/2种,依次类推,直到经过m次比较,剩余可能性为n!/(2^m)种,直到小于等于1时,结果只剩一种。此时的比较次数m为O(nlog2 n)次。1.1 选择排序算法步骤:首先在未...原创 2019-07-09 22:02:06 · 98 阅读 · 0 评论 -
动态规划入门
动态规划概述:动态规划是一种通过子问题的解来求原问题解的递归算法。动态规划是用来求解重叠子问题的,即不同的问题具有公共子问题。动态规划的核心就是对每个子问题只求解一次,将每个子问题的结果保留在一个数组中,从而无需每次求解子问题时都要重复计算,避免了不必要的重复计算。动态规划方法求解的问题类型:(1)**最优化问题:**对于一个问题有许多可行解,每一个解都有一个值,要求寻找具有最...原创 2019-07-15 11:47:24 · 130 阅读 · 0 评论