摘要:
1. 题目 读题 考查点 2. 解法 思路 思路: 遍历pushed数组, 将元素入栈,然后判断栈顶元素是否与popped数组中的元素相同, 如果相同,就出栈,并移动popped数组的指针, 否则继续入栈。 最后判断栈是否为空,如果为空,返回true,否则返回false。 代码逻辑 具体实现 pub 阅读全文
摘要:
1. 题目 读题 考查点 2. 解法 思路 思路: 遍历pushed数组, 将元素入栈,然后判断栈顶元素是否与popped数组中的元素相同, 如果相同,就出栈,并移动popped数组的指针, 否则继续入栈。 最后判断栈是否为空,如果为空,返回true,否则返回false。 代码逻辑 具体实现 pub 阅读全文
摘要:
1. 题目 读题 考查点 2. 解法 思路 解法思路是这样的: 由于房屋是环形排列的,所以不能同时偷第一个和最后一个房间,否则会触发报警。 因此,可以将问题分成两个子问题,一个是不偷第一个房间,另一个是不偷最后一个房间。 对于每个子问题,可以用动态规划的方法求解,定义一个数组表示从某个起点到某个终点 阅读全文
摘要:
希尔排序是一种基于插入排序的高效的排序算法, 它的基本思想 将待排序的序列分成若干个子序列,对每个子序列进行直接插入排序,然后逐渐减小子序列的间隔,直到间隔为1时,对整个序列进行最后一次直接插入排序。 1. 希尔排序的原理 希尔排序是由D.L.Shell于1959年提出的一种改进的插入排序算法,它的 阅读全文
摘要:
多路归并排序的原理和Java实现 什么是多路归并排序? 多路归并排序是一种基于归并操作的有效的排序算法,它使用分治法的思想,将多个有序的子序列合并成一个完全有序的序列。它是一种稳定的排序方法,适用于处理大规模的数据集。 多路归并排序的过程是怎样的? 多路归并排序的过程可以分为两个步骤:分割和合并。 阅读全文
摘要:
堆排序 1. 什么是堆排序? 堆排序是一种基于堆这种数据结构的排序算法。堆是一种特殊的完全二叉树,它满足以下性质: 大顶堆:每个非叶子节点的值都大于或等于其左右子节点的值,根节点的值是最大的。 小顶堆:每个非叶子节点的值都小于或等于其左右子节点的值,根节点的值是最小的。 堆排序的思想是利用大顶堆或小 阅读全文
摘要:
什么是基数排序? 基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。12 基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排 阅读全文
摘要:
桶排序是一种排序算法,它的原理是将数组分到有限数量的桶里,每个桶再个别排序,最后依次把各个桶中的记录列出来。桶排序的效率取决于映射函数的选择和桶的数量。桶排序适用于数据分布比较均匀,或者比较侧重于区间数量的情况。 下面是我为你写的博客正文,希望对你有帮助: 桶排序算法及其Java实现 什么是桶排序? 阅读全文
摘要:
计数排序是一种非比较的排序算法,它的时间复杂度是O(n+k),其中n是待排序数组的长度,k是数组中的最大值。计数排序的基本思想是,对于每个输入元素x,确定小于等于x的元素个数,然后把x放在输出数组中对应的位置上。为了实现这个过程,需要一个额外的数组C,用来存储每个元素出现的次数,以及一个累加数组D, 阅读全文
摘要:
简单插入排序是一种基本的排序算法, 它的思想是 将待排序的元素逐个插入到已经有序的数组中,从而得到一个新的有序数组。 它的时间复杂度是O(n^2),空间复杂度是O(1),是一种稳定的排序算法。 简单插入排序的过程如下: 从第二个元素开始,依次取出每个元素,与前面已经有序的元素进行比较。 如果当前元素 阅读全文
摘要:
1. 算法思想 简单选择排序是一种基本的排序算法, 它的思想是 每次从待排序的序列中选择一个最小(或最大)的元素,放到已排序的序列末尾,直到所有元素都排好序。 它的时间复杂度是O(n^2),空间复杂度是O(1)。 2. 图解 3. JAVA实现 下面是简单选择排序的JAVA实现: public cl 阅读全文
|