![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
慢半拍的猿
这个作者很懒,什么都没留下…
展开
-
取模运算的理解和应用
软件开发过程中,总会遇到取余,取模,取整的计算或者思想,这里小结一下。取模和取余,这两个运算在真整数的时候是一个概论,在负整数进行除法运算时不同。符号:“ % ”。取整:即求商。符号:“ / ”。取模和取余的区别取余运算,在计算商值时,商值向0方向舍入,靠近0原则。 取模运算,在计算商值时,商值向负无穷方向舍入;尽可能让商值小的原则(不超多商值的最大值)。 例子:取模简述 商值 取模值 5 mod 3 = 2 5/3 = 1.66 商取小原则 商=1.原创 2020-07-01 10:11:10 · 10316 阅读 · 1 评论 -
数据结构与算法--排序(二)
一,前言归并排序和快速排序都用了分治的思想,来解决排序的问题。二,归并排序的原理归并排序的核心思想原创 2020-06-19 13:07:57 · 197 阅读 · 0 评论 -
数据结构与算法--排序(一)
排序算法很多,其中最经典,最常用的:冒泡排序 ,插入排序,选择排序,归并排序,计数排序,基数排序,桶排序。大致可以分为三类,如图:带着思考学习:插入排序和冒泡排序的时间复杂度相同,都是,在实际的软件开发 里,为什么我们更倾向于使用插入排序算法而不是冒泡排序算法呢?一,如何分析一个“排序算法”学习排序算法,除了学习它的算法原理,代码实现外,还需要分析一个排序算法,要分析一个排序算法,需要从下几个方面入手:...原创 2020-06-08 13:17:47 · 218 阅读 · 0 评论 -
数据结构与算法--递归
零,递归的典例递归的例子。 周末你带着女朋友去电影院看电影,女朋友问你,咱们现在坐在第几排啊?电影院里面太黑了,看不清,没法数,现在你怎么办? 别忘了你是程序员,这个可难不倒你,递归就开始排上用场了。于是你就问前面一排的人他是第几排,你想只要在他的数字上加一,就知道自己在哪一排了。但 是,前面的人也看不清啊,所以他也问他前面的人。就这样一排一排往前问,直到问到第一排的人,说我在第一排,然后再这样一排一排再把数字传回来。直到你前面的人告诉你他在哪一排,于是你就知道答案了。一,如何理解“递归”数据结原创 2020-05-10 10:36:34 · 377 阅读 · 0 评论 -
数据结构--队列
一,如何理解“队列”可以把队列想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。 栈只支持两个基本操作:入栈push()和出栈pop()。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队enqueue(),放一个数据到 队列尾部;出队dequeue(),从队列头部取一个元素。如图:队列也是一种操作受限的线性表数据结构。队列作为一种非常基础的数据结果,队列的应用也非常广泛,特别是一些具有某些额外特性的队列,例如循环队列,阻塞队列,并发原创 2020-05-09 15:09:41 · 277 阅读 · 0 评论 -
数据结构--栈
一,如何理解“栈”关于“栈”,有一个非常贴切的例子,就是一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地 依次取,不能从中间任意抽出。后进者先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性上看,栈是一种“操作受限”的线性表,只允许一个在插入和删除数据。二,如何实现一个“栈”栈的注意操作包含两个操作,入栈和出栈,即在栈...原创 2020-05-09 09:53:11 · 137 阅读 · 0 评论 -
数据结构--链表(二)
如何轻松写出正确的链表代码?技巧一:理解指针或引用的含义原创 2020-05-06 15:49:39 · 96 阅读 · 0 评论 -
数据结构--链表(一)
一,五花八门的链表结构1,与数组的区别先看下图:可以看出,数组需要一块连续的内存空间来存储,对内存要求比较高,链表恰恰相反,不需要一块连续的内存,通过“指针”将一组零散的内存块串联起来。链表五花八门,最常见的三种链表结构:单链表,双向链表和循环链表。2,单链表单链表存在两个特殊节点,一个作为基地址的头结点还有一个是指向为NULL地址的尾结点。与数组一样,链表也支持数据的...原创 2020-04-28 15:00:42 · 152 阅读 · 0 评论 -
数据结构-数组
一,为何数组的下标都是从0开始原创 2020-04-27 22:35:18 · 157 阅读 · 0 评论 -
复杂度分析与统计
时间,空间复杂度分析一,如何评估代码的时间,空间复杂度。 在运行时,通过添加运行的统计时间来衡量代码的性能,受硬件的性能并受测试数据的规模两个局限性,不能很好的评估。一般我们用“肉眼”来评估算法的执行效率,粗略地讲,就是算法代码执行的时间。二,如何用“肉眼”来评估(大O 复杂度表示法) 从CPU的角度来看,每一行代码都执行着类似的操作:读数据-运算-写数据。我们粗略...原创 2020-04-27 20:15:01 · 203 阅读 · 0 评论 -
序幕
一、学习的目的是什么? 建立对代码的时间复杂度和空间复杂度意识,写出高指令的代码,能够设计基本架构,提升编码能力,训练逻辑思维。而非为了死记硬背几个知识点。二、数据结构和算法是什么? 1、数据结构是指一组数据的存储结构。 2、算法就是操作数据的方法 。 3、数据结构和算法是相辅相成的,数据结构是为算法服务的,而算法要作用在特定的数据结构之上。三、学习的重...原创 2020-04-27 20:15:21 · 200 阅读 · 0 评论