
数据结构与算法
文章平均质量分 88
阿杰来学编程
Hello,world!
展开
-
七大比较排序算法
时间复杂度空间复杂度稳定性插入排序O(N)O(N2稳定希尔排序O(N1.3O(1)不稳定选择排序O(N2O(1)不稳定堆排序O(N * log2N)O(1)不稳定冒泡排序O(N2O(1)稳定快速排序O(N * log2N)O(log2N)不稳定归并排序O(N * log2N)O(N)稳定。原创 2025-02-19 20:32:49 · 887 阅读 · 0 评论 -
Java对象的比较——equals方法,Comparable接口,Comparator接口
从0开始了解Java中对象比较的三种方式!原创 2024-06-01 11:01:34 · 1405 阅读 · 0 评论 -
优先级队列(PriorityQueue)
第一个是无参的构造方法第二个构造方法是创建一个初始容量为形参的优先级队列,注意:传过去的形参不能小于1,否则会抛出IllegalArgumentException异常。一般在创建优先级队列对象时,如果知道元素个数,建议直接将底层容量给好,如果后续需要扩容时,需要开辟更大的空间,拷贝元素,这样效率会比较低第三个构造方法是传比较器,设置该优先级队列底层是建大根堆还是小根堆,默认是建小根堆;另外,建堆的元素是一个个对象时,需要传比较器第四个构造方法是既设置了优先级队列的初始容量,又传了比较器。原创 2024-11-02 15:38:37 · 386 阅读 · 0 评论 -
堆排序和Top-K问题
本文主要探讨了堆排序与Top-K问题的基本原理与实现,堆排序通过构建大根堆或小根堆来实现升序或降序排序,而Top-K问题则利用小根堆和大根堆高效找到数据集中前K个最大或最小元素。利用这两种方法,可以在大数据量下有效进行排序和元素查找,同时分析了相关的时间复杂度。原创 2024-10-30 23:45:27 · 889 阅读 · 0 评论 -
用“堆”模拟实现“优先级队列”
本文介绍了优先级队列的基本概念及其在计算机科学中的应用,阐述了如何利用堆这种数据结构来实现优先级队列,并详细说明了堆的创建、插入、删除以及调整过程。通过提供代码示例,读者能够更好地理解优先级队列的实现细节。原创 2024-10-24 00:25:39 · 754 阅读 · 0 评论 -
二叉树LeetCode刷题
本文介绍了一系列关于二叉树的算法问题,包括判断两颗树是否相同、子树判断、翻转二叉树、平衡树判断、以及如何将二叉搜索树转换为双向链表等。每个问题都提供了解题思路和相关Java代码示例,强调了如何分别利用递归和非递归的方法遍历树及构建树。原创 2024-10-13 23:54:25 · 877 阅读 · 0 评论 -
二叉树的遍历 and 基本操作实现
本文详细介绍了二叉树的四种遍历方式(前序遍历、中序遍历、后序遍历和层序遍历)及其实现代码,同时还阐述了二叉树的基本操作,包括获取节点个数、叶子节点个数、第k层节点个数、获取二叉树高度以及检测值为value的元素是否存在等。这些基本操作对于理解和操作二叉树非常重要。原创 2024-10-11 23:08:28 · 603 阅读 · 0 评论 -
二叉搜索树,Map,Set,LeetCode刷题
二叉搜索树是一种特殊类型的有序树,具有左右子树元素分布的特点,操作包括插入、查找和删除,同时其效率受到树结构的影响。在Java中可以通过一定的代码实现这些操作。此外,文中还介绍了基于红黑树的集合类TreeMap和TreeSet,以及Map接口的相关常用方法,如添加、删除和获取键值对等基础操作,这为理解数据结构提供了良好的基础。原创 2024-08-01 15:57:50 · 1073 阅读 · 0 评论 -
队列(Queue),循环队列,双端队列(Deque)and LeetCode刷题
本文介绍了队列(Queue)、循环队列、双端队列(Deque)以及在LeetCode刷题中的应用。重点包括队列的概念、队列的使用方法、队列的模拟实现(链式结构和顺序结构)、循环队列的实现原理、双端队列的特点以及LeetCode刷题中用队列实现栈和用栈实现队列的方法。原创 2024-07-15 22:39:26 · 1120 阅读 · 0 评论 -
栈(Stack)and leetcode刷题
如果是加减乘除符号,取出一个栈顶元素作为该符号的右操作数,再取出一个栈顶元素做为左操作数,计算得到的结果放入栈中,如此下去,最后栈中只会剩一个元素,这就是最终的结果。当需要取出栈中的元素中,需要依次取出最上面的元素,不能直接取出下面的元素。所以,该栈取出元素的顺序只能为:56,45,34,23,12。假如例子中a,b,c,d,e,f,g分别取1,2,3,4,5,6,7。计算机的工作原理也是这样的,将你输入的中缀表达式转化为后缀表达式,再按照后缀表达式的运算规则进行运算,得到结果!栈的删除操作叫做出栈。原创 2024-07-13 23:04:16 · 819 阅读 · 0 评论 -
无头双向非循环链表实现
无头双向非循环链表大致与无头单向非循环差不多,只不过每个节点多了个prev引用,可以从后一个节点找到前一个节点。并且除了头节点head,双链表还多了个尾节点tail要模拟实现无头双向非循环链表,同样需要创建三个文件:IList.java接口,MyLinkedList.java文件,test.java测试文件,下面仅展示IList.java接口和MyLinkedList.java文件。原创 2024-07-12 15:28:02 · 517 阅读 · 0 评论 -
无头单向非循环链表实现 and leetcode刷题
介绍单链表的模拟实现和leetcode刷题笔记原创 2024-07-11 21:10:32 · 849 阅读 · 0 评论