数据结构和算法
文章平均质量分 86
Hubbert_Xu
这个作者很懒,什么都没留下…
展开
-
算法复杂度--时间复杂度10分钟快速入门
1转载 2020-04-08 23:39:09 · 1950 阅读 · 0 评论 -
数据结构之--栈(Java代码)
什么是栈呢?栈就是一种数据结构,只能从表的一端进行插入和删除。即,Push(入栈) 和 Pop (出栈),这是栈的两个最重要的动作。为了方便读取栈顶数据,通常还是会有一个Peek(查看)函数。栈的容量通常很小,是保存临时数据的。那如何用Java的数据结构来表示栈呢?-----用“数组”来进行栈的操作。public class Stack {原创 2017-11-08 22:26:10 · 544 阅读 · 0 评论 -
数据结构之--队列(Java代码)
队列是一种特殊的线性表,只允许在表的前端进行删除,在表的后端进行插入,表的前端称为(front)队头,表的后端称为(rear)队尾。 所以队列跟生活的场景很是相似,在电影院买电影票,人们排成一排,第一个人进入队尾最先到达队头后买票进入影院,后面排队的人按照排队的次序买到票后进入影院。 所以说:队列是一种先进先出的数据结构(FIFO)。当队列的插入数据时,R原创 2017-11-11 13:10:54 · 421 阅读 · 0 评论 -
数据结构之--二叉树(Java代码)
为什么要使用树呢?在有序数组中,查找十分的快速,但是在插入数据的时候要移动数据,所以效率低下。在链表中,插入和删除数据十分的快速,但是查找的时候却只能从头开始,依次的访问链表中的每一个数据,知道找到该数据为止,所以效率也低下。总的来说:1.在有序数组插入数据慢2.在链表中查询慢而树这种数据结构,既能够像链表那样快速插入和删除,又能像有序数组那样快速查找。原创 2017-11-19 15:53:38 · 590 阅读 · 0 评论 -
数据结构之--优先级队列(Java代码)
优先级队列是比栈和队列更加有用的数据结构。跟普通的队列一样,优先级队列也有队头和队尾,并且也是从一端进,一端出。但是不一样的地方是,优先级队列的值是有序的。如此一来,关键字最小的数据项(或最大的)总是队列的一端。在数据项很少或者不太关系速度的情况下,用数组实现优先队列还可以满足。如果数据项很多,或者速度很快,采用堆是更好的选择。这次代码以最大的关键字放在队头。packa原创 2017-11-14 22:28:35 · 478 阅读 · 0 评论 -
数据结构之--链表(Java代码)
以数组作为存储结构,在无序的情况当中,查找关键字效率十分底下。而在有序的情况下,插入关键字也变得效率底下。而且不管在哪种情况下,数组的删除效率也是很低的。当一个数组创建之后,它的长度是固定的。而链表,可以解决上面的一些问题。一.链结点(Link)在链表中,每个数据项都被包含在“链结点”(Link)中。而链表则是将这些结点给“串联”起来。一个链结点 可能是某个类的对象,例如这个类叫做Link,因为一...原创 2017-11-18 15:47:28 · 505 阅读 · 0 评论 -
Java实现-快速排序(QuickSort)
一. 快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。如图所示:从当前的数组中选取一个元素,将这个元素作为基点,一般选取第一个元素:“4”作为基点。之后再想办法把“4”挪到排好序的时候应该所处的位置,如图所示:“4”出现在这个位...原创 2018-02-26 23:33:30 · 326 阅读 · 0 评论 -
Java实现:排序算法--时间复杂度为O(n² )
为什么要学习时间复杂度为O(n² )?1.基础2.编码简单,易于实现,是一些简单情景的首选3.在一些特殊情况下,简单的排序算法更有效4.简单的排序算法思想衍生出复杂的排序算法1.选择排序选择排序,就是每一次都筛选出最小(或最大)的数字,然后放在每一次排序的第几个位置。比如第一次排序,找出最小(或最大)的元素,放在第一个位置,第二次排序,找出最小(或最大)的元素,放在第二个位置.....顺序从小到大...原创 2018-03-07 00:04:43 · 919 阅读 · 0 评论 -
数据结构之--堆(Java代码)
堆,是一种树,由它实现的优先级队列的插入和删除的时间复杂度都是O(logN)。尽管这样删除的时间变慢了一些,但是插入的时间变快得多了。当速度非常重要,且有很多插入操作时,可以选择 [堆] 来实现优先级队列。----------------------------------------------------------------这里的“堆”是一种特殊的二叉树,不要和Java和C++等编程语言里...原创 2017-12-10 23:24:38 · 350 阅读 · 0 评论