数据结构与算法设计
Right_pro
这个作者很懒,什么都没留下…
展开
-
玩转快速排序
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数转载 2016-03-21 13:49:30 · 1146 阅读 · 0 评论 -
[笔记]算法复习笔记---排序算法(桶排序、冒泡排序)
对于一个算法的性能来说,除了时间复杂度,还有空间复杂度,稳定性等一系列指标。我平常说的算法复杂度可分为两部分:时间复杂度和空间复杂度。从这两个维度综合分析,可以知道一个算法的好坏,然后才可以针对这个算法进行优化。原创 2017-03-19 10:52:10 · 466 阅读 · 0 评论 -
[笔记]算法复习笔记---排序算法(快速排序)
快速排序说到排序,当然少不了快速排序。快速排序其实是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分所有数据要小,按照这种方法再对这两部分数据分别进行快速排序,整个排序过程可以递归实现,最后把元素排列成有序。原创 2017-03-19 12:26:16 · 533 阅读 · 0 评论 -
[笔记]算法复习笔记---数组、集合、散列表(上)
数组是数据结构中最基础的存储方式之一,集合是数组的延伸,散列表,又称哈希表(Hash Table),许多高级语言中都是在数组的基础上实现的,当然还有其他实现形式。原创 2017-03-12 09:35:47 · 783 阅读 · 0 评论 -
[笔记]算法复习笔记---数组、集合、散列表(下)
散列表是一种空间换时间的数据结构,在算法中提升效率的一种常用的方法。但是,正如其特点,有时候所消耗的空间,真让人头疼,用的时候在二者之间权衡。散列表,又叫哈希表(HashTable),是能够通过给定的关键字的值直接访问到具体对应值的数据结构。也就是说,把关键字映到一个表中的位置来直接访问记录,以加快访问速度。通常,我们通过Key来找Value,也就是说,通过Key访问一个映射表来得到Value的地址原创 2017-03-12 13:09:19 · 561 阅读 · 0 评论 -
[笔记]算法复习笔记---栈、队列、链表(上)
栈,又叫做堆栈(Stack),但是它和堆没有关系。实际上堆和栈是两种不同的概念,栈是一种只能在一端进行插入和删除的线性数据结构。栈的特点:先进先出(LIFO,Last In First Out),也可以说是先进后出(FILO,First In Last Out),我们只能从一端去操作元素。一般来说,栈主要有两种操作:一个是进栈(Push),又叫做入栈,压栈;另一个是出栈(POP)。原创 2017-03-12 14:05:26 · 505 阅读 · 0 评论 -
[笔记]算法复习笔记---栈、队列、链表(中)
用两个栈来实现队列方法: 入队都在Stack1中操作,出队都在Stack2中进行,入队和出队的规则如下: 入队:直接把元素压入Stack1中。 出队:如果Stack2不为空,直接弹出stack2的元素,如果stack2为空,将stack1中所有元素倒入stack2,然后弹出stack2栈顶元素。如果两个队列都空,队列为空队,无法出栈。原创 2017-03-12 14:25:07 · 533 阅读 · 0 评论 -
[笔记]算法复习笔记---栈、队列、链表(下)
链表链表的数据结构与栈和队列有所不同,栈和队列都是申请一段连续的存储空间,然后按照顺序存储。而链表是一种在无理数非连续、非顺序的存储结构,数组元素的申请是通过每个元素的指针来联系起来的。链表分为两种:单向链表和双向链表。我们平时说的,一般是指单向链表,链表在每个节点除了存储数据之外,还额外存储两个指针,分别指向前一个节点,和后一个节点。原创 2017-03-13 23:31:28 · 622 阅读 · 0 评论