数据结构
文章平均质量分 84
主要记录一些关于数据结构的知识点
喝养乐多长不高
大二学生,正在学习Java,希望和大家一起进步
展开
-
《java数据结构》--一篇解决二叉搜索树!!
我们可以根据二叉搜索树的特性,它的每一个结点的左子树比根小右子树比根大来进行快速查找,当一个数比根结点小就往根结点的左边找,比根结点大就往右边找,每次都可以将搜索范围缩小一半,最多查找h(树的高度)次,一个相对平衡的二叉树搜索树的时间复杂度大概为O(logN),为什么要说相对平衡呢?这种情况利用上面的方法依然可以实现,比如cur在父节点的右边,因为cur没有子树,所以不管父节点连cur的左边还是右边(左右都为null)都可以完成删除,cue在父节点左边也是一样的,所以这部分内容利用上面的代码也能实现。原创 2024-05-31 17:43:23 · 815 阅读 · 0 评论 -
《java数据结构》--顺序表详解
接下来开始添加,既然要指定位置添加数据那么原来的数据顺序肯定不能变而且被指定的位置肯定还要是可覆盖的,我们直接让那个位置以后的数据都向后移动一步就行,然后用要添加的数据直接覆盖掉那个位置就行。//这里改了list 3,结果list 1也跟着改了,是因为,sublist方法,并不是返回一个新的数组,而是返回原来数组的sublist的方法的第一个参数下标处的地址也就是返回1下标处的地址,还是在对同一个数组操作。到这里我们的顺序表就实现完了,但是Java中的顺序表还有很多方法有兴趣的小伙伴可以自己去实现一下。原创 2024-05-27 19:49:13 · 988 阅读 · 0 评论 -
数据结构--二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。如果将他的图画出来的话很像一棵树。原创 2024-04-09 12:56:16 · 874 阅读 · 0 评论 -
数据结构--手撕八大排序(超级详细)!!
排序是一种重要的算法,需要我们掌握的方法有很多比如最常见的八种排序算法:插入排序,希尔排序,直接选择排序,堆排序冒泡排序,快速排序,归并排序。当然还有一些其他的排序方法如基数排序,桶排序这里就不多做阐述。1. 冒泡排序和选择排序均为简单直观的排序算法,但是在大规模数据下效率较低。2. 插入排序在部分有序序列下具有较高的效率,但在一般情况下效率低于其他算法。3. 希尔排序通过分组插入排序的方式提高了效率,但在最坏情况下仍然是较慢的排序算法。原创 2024-04-11 23:46:21 · 999 阅读 · 5 评论 -
《java数据结构》--栈的详解
栈是一种不同于链表和顺序表的储存数据结构,它对存储数据和取出数据有着特殊的要求🤔。首先栈只能从一端存储数据,这也是栈最大的特点,这也导致在栈中存取数据都必须遵循的原则😊,即先存入的数据只能最后拿出来,嗯🤔你可以把它想做一个细长的圆桶,你要往里放东西肯定是先放在最下面,当放满这个圆桶后你要再拿出刚开始放的那个,就必须把它上面的东西都拿出来才行。下面我来画图演示一下(画的不好请见谅🦊):一般我们将栈用来存取的一端叫做我们常常说取栈顶元素就是去取离栈顶最近的元素(也就是图中的3),另一端叫做。原创 2024-05-28 17:07:27 · 750 阅读 · 0 评论 -
《java数据结构》--队列详解
我们一般将如数据的操作叫入队,入队的一端称作队尾,取出数据的操作叫做出队,出队的一端称作队头,根据上面的图我们可以发现元素1是最先入队的并且是最先出队的。我们要注意的是在java中Queue是一个接口,不能直接实例化,但是LinkedList实现了Queue接口(它的底层是用一个双向链表实现的),可以用Queue接口去实例化LinkedList对象😉。的原则,栈是只有一端可以存取,队列是一端存,一端取。博主这里也是用链表来实现的,为了方便进行尾插,这里我们不仅定义一个头结点还定义一个尾结点。原创 2024-05-28 20:42:00 · 444 阅读 · 0 评论 -
《Java数据结构》--单链表详解
单链表是一种物理存储结构是非连续,非线性的但是在逻辑结构上是连续且线性的,链表是通过一个个结点来实现的,使每个相邻结点之间存在一定关系来将所有结点串起来,在物理存储上像是一条链子。原创 2024-05-27 23:47:41 · 885 阅读 · 0 评论