- 博客(19)
- 收藏
- 关注
原创 各类排序的性能及实现
Java排序方法中,分为基于比较的排序方法和非基于比较的排序方法。基于比较的排序方法适用于各类规模的数据,适用范围比较广。非基于比较的排序方法需要占用空间来确定其唯一位置,所以适用范围有限。不要求稳定,数据规模小,且数据无序的情况下,选择快速排序;要求稳定且数据规模小,数据有序的情况下,选择插入排序,数据无序的情况下,选择归并排序;若数据规模较大,选择快速排序,归并排序,或堆排序。
2023-05-11 18:00:48
195
原创 数组中最小的k个数&第k大的数字
思路:找到k个最大的数字,其中最小的数字即为数组中第k大的数字。采用小根堆存储k个最大的数字,每次从数组中,然后判断数组中其他数字是否小于堆顶的最小值,如果新读入的数字比堆顶数字的值要大,那么就弹出堆顶数字,将新的数字入堆。思路:采用大根堆维护数组中的前k个最小的值。首先将k个数插入大根堆,然后从k+1个数开始遍历数组,遍历到比大根堆中堆顶的数要小的数值,就弹出堆顶的数,并插入当前遍历到的数。最后,将k个最小值存储到数组中返回即可。例题2:数组中第k大的数字。例题1:数组中最小的k个数。
2023-04-27 17:00:41
192
原创 构造二叉树
思路:线序遍历的第一个元素就是根节点,通过中序遍历可以得到左子树和右子树,再将左右子树分别看成一颗独立的数,继续使用先序遍历判断根节点,再通过中序遍历得到子树。思路:后续遍历的最后一个元素为根节点,结合根节点在中序的位置,得到左子树和右子树,针对每个部分可以用同样的方法继续递归下去构造。例题1. 从前序与中序遍历序列构造二叉树。例题2. 从中序与后续遍历序列构造二叉树。前序遍历顺序:根->左->右。中序遍历顺序:左->根->右。中序遍历顺序:左->根->右。后序遍历顺序:左->右->根。
2023-04-21 16:00:42
103
原创 实现队列和栈的转换
两个队列,queue1用于存储栈内的元素,queue2作为入栈操作的辅助队列。入栈时,首先将元素入栈到queue2,然后将queue1的全部元素依次出队,并入队道queue2,此时queue2的前端元素即为新入栈的元素。然后,将queue1和queue2互换,这样,queue1的元素就为栈内的元素,queue1的前端和后端分别对应栈顶和栈底。每次出栈或查看栈顶元素时,若输出栈为空,就将输入栈的全部元素弹出,并入栈到输出栈。如图,栈顶的元素先出栈,最后出栈的元素是最先进入栈的元素。
2023-04-14 16:24:59
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人