数据结构
文章平均质量分 86
数据结构详细讲解,从原理到实践!
郭贼不是我的菜
这个作者很懒,什么都没留下…
展开
-
复习-图(非邻接表和邻接矩阵的存储方式和相关算法)
图非邻接表和邻接矩阵的存储方式、深度、广度、prim、kruskal、dijkstra原创 2022-03-08 12:50:35 · 507 阅读 · 1 评论 -
复习-排序
前言:仅用来自己复习,如果有读者发现错误,提出批评指正,非常感谢。选择排序选择排序:假设我们把数组分成有序区间和无序区间,有序区间开始时为0,无序区间为数组元素总个数,选择排序就是不断循环遍历无序区间。找到无序区间最值元素下标,再与无序区间第一个元素交换,使的有序区间越来越大,无序区间越来越小,最后整个区间有序。简而言之,选择排序就是遍历选择最值下标的过程。public class SelectionSort { public static void selectionSort(int[原创 2022-03-08 12:45:35 · 547 阅读 · 0 评论 -
Java排序算法总结
排序稳定性:两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。排序分类:插入排序 插入排序的优化版–希尔排序基于选择的排序:选择排序 堆排序冒泡排序快速排序归并排序怎么学习排序?思想–通过思想可以手动排出来实现–代码复杂度比较插排思路过程插排是将整个需要比较的区间分为有序区间和无序区间,然后将无序区间的第一个元素插入到有序区间的合理位置(即插入之后的有序区间仍然有序),重复循环,直到遍历完整原创 2021-03-20 16:58:22 · 196 阅读 · 1 评论 -
堆(Heap)、优先级队列
堆(heap)什么是堆堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一颗树(逻辑上)的数组对象(实质上)。并且堆总是满足下列性质:堆中某个结点的值总是不大于或不小于其父节点的值堆总是一颗完全二叉树将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。那么对应的已知父节点下标parentIndex,则左孩子的下标为2*parentIndex+1,右孩子的下标为2*parentIndex+2;堆的作用是快速找集合中的最值,例如平时写的题目topK原创 2021-03-20 15:48:14 · 133 阅读 · 0 评论 -
二叉树基本知识
二叉树(Binary Tree)概念二叉树是一种特殊的树,它的每个节点,最多只能有两个孩子,并且二叉树是有序树(孩子的前后关系很重要)。二叉树的所有形态如下:两种特殊二叉树满二叉树:一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^k-1,则它就是满二叉树。完全二叉树:即添加结点顺序为从左往右、从上往下,删除顺序为从右往左、从下往上的二叉树。二叉树的性质若规定根结点的层数为1,则一颗非空二叉树的第i层上最多有2^(i原创 2021-02-23 11:07:25 · 282 阅读 · 0 评论 -
栈与队列常用方法(LeetCode题目实操演练)
队列和栈队列是一种线性结构,但是它只能从头尾插入和删除,并且遵守先进先出(FIFO)的规则。在java中有两个接口Queue(单向队列)和Deque(双向队列)。紧接着我们来捋一下继承关系。Queue与Deque方法:Queue方法:作用第一组第二组插入boolean add(E e)boolean Offer(E e)删除队首元素E remove()E poll()查看队首元素E element()E peek()区别通过异常通知调用者发生错原创 2021-01-19 18:39:58 · 294 阅读 · 1 评论 -
用扑克游戏操练List常用方法
线性表List(线性表)是一个接口,ArrayList(顺序表)和LinkedList(链表)继承了List。List的常用方法:方法签名功能描述add(E e)把e这个元素,尾插到线性表中add(int index,E e)把e这个元素,插入到index所在位置,同时,index之后的所有元素,必须"逻辑"后移remove(int index)删除index这个下标的元素,同时,index之后的所有元素,必须"逻辑"前移remove(Object o)删原创 2021-01-14 16:44:25 · 2190 阅读 · 7 评论