JAVA数据结构
文章平均质量分 74
JAVA实现各种数据结构
ren9855
这个作者很懒,什么都没留下…
展开
-
Map和Set
二叉搜索树查找方式:如果我们要查找6这个数字,那么我们从根节点开始,遇到根节点值为8,比我们要查找的值大,根据二叉搜索树的性质,左子树的值都比根节点小,所以我们往左边查找,左子树根节点是5,6>5,所以我们要往右搜寻,6就被找到了.开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中.哈希函数设置为:hash(key) = key % capacity;原创 2023-02-07 17:55:16 · 485 阅读 · 1 评论 -
排序算法·
插入排序的基本思想是:每一步将一个待排序元素按其关键字值得大小插入到已排序序列得适当位置上,直到待排序元素插入完为止.如果要对具有n个元素得数组arr进行排序,初始状态时,可以认为已排序序列为arr[0],待排序序列为arr[1]~arr[n-1],从arr[i]开始向arr[0]方向扫描各元素,寻找适当位置插入arr[i],依次进行,即可完成排序.(2)对前n-1个元素进行第二趟起泡排序,将其中最大元素交换到第n-1个位置.小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列.原创 2023-01-19 00:43:39 · 96 阅读 · 0 评论 -
优先级队列(堆)
我们入队列时,先判断是否满了,然后我们将入队列的值放入数组的最后一个,将它和他的父亲节点进行比较,若小于进行交换,一直循环到父亲节点小于0;我们先将数组变成大堆,然后将第一个数和最后一个数进行交换,这时将最大的一个数就确定下来了,固定这个数,将第一个数进行排序,重复上述过程.注意:一般来说for循环的时间复杂度为N,shiftDown的时间复杂度为logN,所以为O(N*logN),但是实际上为O(N);父亲结点为i时,左孩子的结点为 i* 2+1,右孩子的结点为 * 2+2;什么是大根堆和小根堆?原创 2023-01-18 23:29:30 · 980 阅读 · 0 评论 -
[数据结构]栈和队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头 (Head/Front)栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。队列(queue) 是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。栈顶(Top):线性表允许进行插入删除的那一端。原创 2023-01-07 17:36:34 · 574 阅读 · 0 评论 -
链表(1)
链表由节点域和next域构成,删除和增加元素不用像顺序表一样前后移动元素,只需要改变链表的指向即可,也不用担心添加的元素过多.原创 2022-10-24 20:37:12 · 86 阅读 · 0 评论 -
JAVA顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。原创 2022-10-22 11:27:32 · 312 阅读 · 0 评论