随笔分类 -  算法与数据结构

摘要:在上一篇中,回顾了一下针对选择排序的优化算法——堆排序。堆排序的时间复杂度为O(n logn),而快速排序的时间复杂度也是O(n logn)。但是快速排序在同为O(n logn)的排序算法中,效率也是相对较高的,而且快速排序使用了算法中一个十分经典的思想——分治法;因此掌握快速排序还是很有必要的。 阅读全文
posted @ 2019-04-06 13:48 masimaro 阅读(183) 评论(0) 推荐(0) 编辑
摘要:上一次说到了3种基本的排序算法,三种基本的排序算法时间复杂度都是O(n^2),虽然比较简单,但是效率相对较差,因此后续有许多相应的改进算法,这次主要说说堆排序算法。 <! more 堆排序算法是对选择排序的一种优化。 那么什么是堆呢?堆是一种树形结构。在维基百科上的定义是这样的“给定堆中任意节点 P 阅读全文
posted @ 2019-03-31 14:51 masimaro 阅读(161) 评论(0) 推荐(0) 编辑
摘要:前面几篇基本上把基本的数据结构都回顾完了,现在开始回顾那些常见的排序算法。 排序是将一组无序的数据根据某种规则重新排列成有序的这么一个过程,当时在大学需要我们手工自己实现的主要有三种:选择排序、插入排序和冒泡排序。因为它比较简单,所以这里把他们放到一起作为最基本的排序算法。 <! more 插入排序 阅读全文
posted @ 2019-03-23 13:00 masimaro 阅读(221) 评论(0) 推荐(0) 编辑
摘要:栈与队列一样也是一种线性的数据结构,与队列不同的是栈是一种先进后出的结构,有点类似于现实中的弹夹,最后压进去的子弹总是最先被打出来,在计算机中栈用到的地方就是用作函数传参与函数中局部变量的保存,也就是我们经常说的函数栈。栈同样有基于数组和基于链表的实现 <! more 基于链表的实现 基于链表实现的 阅读全文
posted @ 2019-03-02 11:29 masimaro 阅读(247) 评论(0) 推荐(0) 编辑
摘要:队列也是一种线性的数据结构,它与链表的区别在于链表可以在任意位置进行插入删除操作,而队列只能在一端进行插入,另一端进行删除。它对应于现实世界中的排队模型。队列有两种常见的实现方式:基于列表的实现和基于数组的实现 <! more 基于链表的实现 基于链表的队列,我们需要保存两个指针,一个指向头节点,一 阅读全文
posted @ 2019-02-23 18:26 masimaro 阅读(375) 评论(0) 推荐(0) 编辑
摘要:上一篇简单的开了一个头,简单介绍了一下所谓的时间复杂度与空间复杂度,从这篇开始将陆陆续续写一下常用的数据结构:链表、队列、栈、树等等。 <! more 链表当初是我在学校时唯一死磕过的数据结构,那个时候自己还算是一个好学生,虽然上课没怎么听懂,但是课后还是根据仔细调试过老师给的代码,硬是自己给弄懂了 阅读全文
posted @ 2019-01-19 22:18 masimaro 阅读(243) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示