常用算法
算法
Anpunph.
这个作者很懒,什么都没留下…
展开
-
冒泡排序算法
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这意味着数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(或说是排序的开头位置),就如同水中的气泡一样上升到水面。冒泡排序的写法可以简单分为两种方式,分别是:前同后异、前异后同。原创 2024-08-28 21:25:50 · 1437 阅读 · 0 评论 -
不定长滑动窗口(求子数组个数)的两类典型应用
不定长滑动窗口,也可以称之为双指针;原创 2024-08-27 18:16:56 · 357 阅读 · 0 评论 -
分组循环算法
分组循环算法(Group Round Robin Algorithm)通常用于将一组元素(如任务、数据项等)均匀地分配到多个组中,并可能在这些组之间循环地选择以进行进一步处理。这种算法在负载均衡、任务调度、数据分区等场景中非常有用。原创 2024-08-22 18:07:03 · 412 阅读 · 0 评论 -
计数排序算法
计数排序(Counting Sort)是一种非比较型整数排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。原创 2024-08-21 15:19:46 · 698 阅读 · 0 评论 -
秦九韶算法
秦九韶算法是一种将一元n次多项式的求值问题转化为n个一次式的算法,这种算法通过减少乘法的次数,大大提高了多项式求值的效率。秦九韶的这一贡献被详细记载在他的数学著作《数书九章》中,该书系统地总结和发展了高次方程的数值解法与一次同余问题的解法,是中国古代数学的重要里程碑。原创 2024-08-21 22:42:17 · 360 阅读 · 0 评论 -
KMP算法的两种实现形式
这个方式下,模式串匹配失败的回退方式是从本身位置的前一个位置处,获取回退位置。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。这个方式下,模式串匹配失败的回退方式是从本身位置,获取回退位置。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。原创 2024-08-12 20:56:48 · 242 阅读 · 0 评论 -
Fisher-Yates 洗牌算法
Fisher-Yates 洗牌算法(也称为 Knuth 洗牌算法),是一种在编程中用来随机排列一个有限序列(比如数组)的有效算法。其核心思想是遍历数组,对于每个位置,随机选取一个包括当前位置在内的、尚未处理的位置,然后与当前位置交换元素。这个过程一直进行到遍历完所有元素。Fisher-Yates 洗牌算法的一个关键点是确保每个元素都能等概率地出现在数组的任何位置上。原创 2024-08-17 15:05:50 · 355 阅读 · 0 评论 -
二分查找算法详解
二分查找算法(Binary Search Algorithm)是一种在中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到元素。二分查找算法的,其中n是数组中的元素数量。这意味着随着数组大小的增加,查找所需的时间以对数速度增长,相对于简单的线性查找(时间复杂度为O(n))来说,效率要高得多。原创 2024-08-16 18:44:30 · 382 阅读 · 0 评论 -
定长滑动窗口算法
在Java中实现定长滑动窗口算法,主要用于处理数组或列表中的一系列元素,通过固定大小的窗口来遍历这些元素,并在每个窗口位置执行特定的操作(如求和、查找最大值等)。然后,方法通过一个循环来滑动窗口,每次循环都会从当前和中减去窗口最左边的元素,并加上新进入窗口的元素,从而更新当前和,并将其存储在。以下是一个使用Java实现的定长滑动窗口算法示例,该示例用于计算给定数组中每个滑动窗口内的元素和。在初始化阶段,方法计算了第一个窗口的元素和,并将其存储在。,因为每个窗口都会从数组的开始向后滑动,直到数组末尾的。原创 2024-08-19 15:40:42 · 406 阅读 · 0 评论