数据结构
文章平均质量分 55
无问287
这个作者很懒,什么都没留下…
展开
-
二分查找算法
二分查找算法,也称为折半查找算法,是一种在有序数据集合中查找目标值的算法。它通过将目标值与数据集合的中间元素进行比较,从而将搜索范围缩小一半。如果目标值等于中间元素,则找到了目标;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。通过重复这个过程,最终可以找到目标值或确定目标值不存在于数据集合中。二分查找算法是一种高效且常用的搜索算法,适用于有序数据集合中的搜索操作。它通过每次将搜索范围缩小一半,快速逼近目标值,具有较低的时间复杂度和简单的实现方式。原创 2024-03-09 15:40:00 · 2503 阅读 · 0 评论 -
使用两个队列实现栈
在计算机科学中,栈是一种数据结构,它遵循后进先出(LIFO)的原则。这意味着最后一个被添加到栈的元素将是第一个被移除的元素。然而,Java的标准库并没有提供栈的实现,但我们可以使用两个队列来模拟一个栈的行为。首先,我们需要创建一个名为MyStackqueue1和queue2。这两个栈将用于实现队列的功能。接下来,我们需要实现队列的基本操作,包括pushpoppeek和empty。首先,我们需要创建一个栈类。原创 2024-02-22 16:56:07 · 2939 阅读 · 0 评论 -
Java实现一个队列
目录概念与结构实现一个队列创建一个队列类 实现队列的基本操作测试队列类表示队列的最大容量,表示队头的位置,表示队尾的位置,是一个整数数组,用于存储队列中的元素。实现队列的基本操作包括入队(enqueue)、出队(dequeue)和查看队头元素(peek)。测试队列类原创 2024-02-20 15:59:23 · 2669 阅读 · 0 评论 -
Java实现一个栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。包括入栈(push)、出栈(pop)和查看栈顶元素(peek)。LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在。出栈:栈的删除操作叫做出栈。原创 2024-02-19 16:12:06 · 2686 阅读 · 0 评论 -
Java实现一个单链表
节点类包含两个属性:数据元素和指向下一个节点的指针int data;Node next;原创 2024-02-19 11:38:29 · 2819 阅读 · 0 评论 -
排序之快速排序
快速排序是一种分治算法,它的基本思想是将一个大问题分解成两个或更多的相同或相似的子问题,然后递归地解决这些子问题,最后将这些子问题的解合并以得到原问题的解。选择一个基准元素(pivot)。将所有小于基准的元素移动到基准的左边,所有大于基准的元素移动到基准的右边。这个过程称为分区(partition)操作。对基准左边和右边的两个子数组分别进行快速排序。快速排序是一种非常高效的排序算法,它的平均时间复杂度为O(nlogn),最坏情况下的时间复杂度为O(n^2)。原创 2024-01-20 19:10:09 · 3544 阅读 · 0 评论 -
排序之归并排序
归并排序是一种高效的排序算法,其时间复杂度为O(nlogn),空间复杂度为O(n)。通过将待排序的序列分成两个子序列,对每个子序列进行排序,然后将排序后的子序列合并成一个有序序列,可以实现对任意长度的序列进行排序。本文介绍了归并排序的基本原理和Java实现,希望对你有所帮助。原创 2024-01-19 20:16:29 · 3434 阅读 · 0 评论 -
解决哈希冲突的几种方法
拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短;由于拉链法中各链表上的结点空间是动态申请的,故它更适合于造表前无法确定表长的情况;开放定址法为减少冲突,要求装填因子α较小,故当结点规模较大时会浪费很多空间。而拉链法中可取α≥1,且结点较大时, 拉链法中增加的指针域可忽略不计,因此节省空间;在用拉链法构造的散列表中,删除结点的操作易于实现。只要简单地删去链表上相应的结点即可。原创 2024-01-17 08:09:47 · 4703 阅读 · 0 评论 -
排序之基数排序
基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。这种排序算法的主要优点是在处理大量数据时,其时间复杂度为O(nlogn),空间复杂度为O(1)。原创 2024-01-14 00:15:00 · 3612 阅读 · 0 评论 -
排序之堆排序
堆排序是一种基于二叉堆的比较排序算法。它的主要思想是将待排序的序列构造成一个大顶堆(或小顶堆),然后将堆顶的最大元素与末尾元素进行交换,再调整剩余元素为大顶堆,如此反复,直到整个序列有序。堆排序是一种非常高效的排序算法,其时间复杂度为O(nlogn),空间复杂度为O(1)。虽然它的实现相对复杂一些,但是一旦理解了其基本思想,就可以很容易地掌握这种算法。希望这篇文章能帮助你更好地理解和应用堆排序。原创 2024-01-13 00:15:00 · 3664 阅读 · 0 评论 -
排序之希尔排序
希尔排序,也被称为缩小增量排序,是一种基于插入排序的算法。它通过比较相距一定间隔的元素,来工作,然后再逐渐减小间隔,直到整个数组排序完成。这种算法的主要优点是对于部分有序的数组,其效率非常高,可以达到线性排序的效率。原创 2024-01-12 00:15:00 · 3641 阅读 · 0 评论 -
排序之插入排序
插入排序是一种简单而有效的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。原创 2024-01-11 00:15:00 · 4403 阅读 · 0 评论 -
排序之选择排序
选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,继续放在起始位置直到未排序元素个数为0。选择排序的步骤:1>首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。2>再从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始位置。3>重复第二步,直到所有元素均排序完毕。原创 2024-01-07 00:15:00 · 3831 阅读 · 0 评论 -
排序之冒泡排序
方法是冒泡排序的核心部分,它接受一个整数数组作为参数。外层循环控制比较的轮数,内层循环控制每轮比较的次数。在内层循环中,如果当前元素大于下一个元素,则交换它们的位置。这样,每一轮比较后,最大的元素都会被移动到数组的末尾。重复这个过程,直到整个数组都被排序。冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。在这个例子中,我们首先定义了一个整数数组。排序完成后,我们使用。原创 2024-01-06 00:15:00 · 3678 阅读 · 0 评论