(文章目录) 什么是大O复杂度表示法   算法的执行效率,粗略地讲,就是算法代码执行的时间。但是,如何在不运行代码的情况下,用“肉眼”得到一段代码的执行时间呢?   这里有段非常简单的代码,求1,2,3...n的累加和。现在,我就带你一块来估算一下这段代码的执行时间。 intcal(intn){ intsum=0; inti=1; for(;i<=n;i){ sum=sum+i; } returnsum; }   从CPU的角度来看,这段代码的每一行都执行着类似的操作:读数据-运算-写数据。尽管每行代码对应的CPU执行的个数、执行的时间都不一样,但是,我们这里只是粗略估计,所以可以...

(文章目录) 什么是数组   数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。   这个定义里有几个关键词,理解了这几个关键词,我想你就能彻底掌握数组的概念了。 线性表   顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。   而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。 连续的内存空间和相同类型的数据   我们拿一个长度为10的int类型的数组int[]a=newint[10]来举例...

(文章目录) 什么是队列   队列跟栈一样,也是一种操作受限的线性表数据结构。不过,队列是先进者先出。 队列和栈的区别   栈只支持两个基本操作:入栈push()和出栈pop()。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队enqueue(),放一个数据到队列尾部;出队dequeue(),从队列头部取一个元素。  队列的概念很好理解,基本操作也很容易掌握。作为一种非常基础的数据结构,队列的应用也非常广泛,特别是一些具有某些额外特性的队列,比如循环队列、阻塞队列、并发队列。它们在很多偏底层系统、框架、中间件的开发中,起着关键性的作用。比如高性能队列Disruptor、Lin...

(文章目录) 什么是栈   后进者先出,先进者后出,这就是典型的“栈”结构。   就像一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。   从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。 如何实现一个“栈”? 定长顺序栈   栈主要包含两个操作,入栈和出栈,也就是在栈顶插入一个数据和从栈顶删除一个数据。   栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈。我们这里给出一个用数组实现顺序栈的代码示例: publicclas...

  c3RNVe0WVhHe   2023年11月02日   81   0   0 出栈入栈数组数组入栈出栈

(文章目录) 链表和数组的区别   相比数组,链表是一种稍微复杂一点的数据结构。对于初学者来说,掌握起来也要比数组稍难一些。这两个非常基础、非常常用的数据结构,我们常常会放到一块儿来比较。所以我们先来看,这两者有什么区别。   为了直观地对比,我们画图示例。从图中我们看到,数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个100MB大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于100MB,仍然会申请失败。   而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,所以如果我们申请的是100MB大小的链...

  c3RNVe0WVhHe   2023年11月02日   23   0   0 数组结点链表数组结点链表
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~