![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
haoxin963
身为一名资深Java程序员,我已经把人工智能融入我的代码中,梦想用Java创造出能和我一起喝咖啡的智能机器人!
展开
-
时间复杂度和空间复杂度
一、为什么要研究时间和空间复杂度 假设计算机是无限快的并且计算机存储器是免费的的,你还有什么理由来研究算法吗?即使只是因为你还想证明你的解法会终止并以正确的答案终止,那么回答也是肯定的。 如果计算机无限快,那么用于求解某个问题的任何正确的方法都行。也许你希望你的实现在好的软件工程实践的范围内(例如,你的视线应该具有良好的设计与文档),但是你最常使用的是最容易实现的方法。 ...原创 2019-08-13 13:52:00 · 231 阅读 · 0 评论 -
为什么需要算法与数据结构
我们想一下:如果计算机是无限快的并且计算机存储器是免费的,我们还需要算法和数据结构吗?是的,这样的话我们确实不要什么算法和数据结构了。但是,计算机也许是快的,但它们不是无限快。存储器也许是廉价的,但不是免费的。所以计算时间是一种有限资源,存储器中的空间也一样。你应该明智地使用这些资源,在时间或空间方面有效的算法将帮助你这样使用资源。我们知道计算机的核心能力就是计算,计算就离不开算法与对...原创 2019-05-04 17:09:00 · 540 阅读 · 0 评论 -
什么是算法与数据结构
1.什么是数据结构我们可以想象一下:内存就是一个有很多标上序号的格子的大容器(可能有上亿个),CPU可以通过序号取到格子里的数据(0或者1),然后cpu用它仅有的几个指令执行运算,最后将运算结果放回到格子里。但是我们怎么很好的使用这些格子呢?如果是随意放,下次我们怎么找到放进去的数据呢?怎么存放指定格式的数据?等等数据结构正是解决这些问题,所以数据结构就是计算机里存放,组织数据的一种方...原创 2019-05-11 17:22:02 · 556 阅读 · 0 评论 -
算法复杂度分析
采用不同的算法,会有不同的效率。因此,知道某个算法的运行速度和占用的内存空间,对于选择正确的算法来解决问题非常有帮助。3.1 时间复杂度算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做:T(n) = O(f(n))算法执行时间的增长率与f(n) 的增长率正相关,称作渐近时间复杂度(Asymptotic ...原创 2019-05-11 19:49:43 · 323 阅读 · 0 评论 -
最好、最坏、平均、均摊时间复杂度分析
前一篇文章算法复杂度分析讲述了复杂度的大 O 表示法和几个分析原则,这篇文章我们来讲讲另外几种复杂度,最好情况时间复杂度(best case time complexity)、最坏情况时间复杂度(worst case time complexity)、平均时间复杂度(average case time complexity)和均摊时间复杂度(amortized time complexity)。...原创 2019-08-12 09:50:39 · 1522 阅读 · 0 评论 -
数据结构-数组
一、什么是数组数组(Array)是一种线性表数据结构,它用一组连续的内存空间来存储一组具有相同类型的数据。下面是两个值得注意的概念:1. 线性表(linear list)线性表,即数据的逻辑结构是线性的。每个线性表中的数据最多只有向前和向后两个方向。典型的线性表有数组、链表、队列和栈。和线性表相对应的就是非线性表,即数据之间不是简单的前后关系。如树、堆、图等。2. ...原创 2019-08-12 10:16:12 · 260 阅读 · 3 评论 -
数据结构-链表
一、 什么是链表链表是通过指针把一组零散的内存块串联在一起的线性数据结构。链表和数组的内存分布如下图所示:可以看出,链表和数组的最大区别在于,数组需要一块连续的内存空间来存储,对内存的要求较高。而链表不需要连续的内存空间,它通过指针将一组零散的内存块串联起来使用。二、常见的链表结构单链表链表通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的“结点”。为了...原创 2019-08-12 10:42:10 · 232 阅读 · 0 评论 -
数据结构-栈
一、什么是栈我们把类似于弹夹那种先进后出的数据结构称为栈,栈是限定仅在表尾进行插入和删除操作的线性表,我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈,栈又称后进后出的线性表,简称LIFO结构。栈首先是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系,只不过是一种“操作受限”的线性表,只允许在一端插入和删除数据。相比数组和链表,栈带给我的只有限制...原创 2019-08-12 14:15:02 · 187 阅读 · 0 评论 -
数据结构-队列
一、什么是队列队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,队列是一种先进先出的线性表,简称FIFO,允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。向队中插入元素称为进队,新元素进队后成为新的队尾元素;向队中删除元素称为出队,元素出队后,其后继元素就成为新的队头元素。二、队列的实现跟栈一样,队列可以用数组来实现,也可以用链表来实现。用数...原创 2019-09-03 21:07:34 · 219 阅读 · 0 评论