算法
文章平均质量分 89
各种基础算法,数据结构
qxhly
但行善事,莫问前程
展开
-
滑动窗口算法基本原理
学过计算机网络的同学,都知道滑动窗口协议(Sliding Window Protocol),该协议是 TCP协议 的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。 滑动窗口算法其实和这个是一样的,只是用的地方场景不一样,可以根据需要调整窗口的大小,有时也可以是固定窗口大小。 滑动窗口算法在一个特定大小的字符串或数组上进行操作,而不在整个字符串和数组上操作,转载 2021-08-26 09:54:03 · 4419 阅读 · 1 评论 -
二分查找算法及扩展优化
有序数组中查找无重复元素的位置 二分查找就是将查找的值和子数组的中间值作比较,如果被查找的值小于中间值,就在左子数组继续查找;如果大于中间值,就在右子数组中查找,否则中间值就是要找的元素 public class BinarySearch{ // 非递归方式 public int binarySearch(int[] arr, int target) { int l...原创 2020-04-13 21:59:42 · 193 阅读 · 0 评论 -
斐波那契数列及优化
由来 1202 年,生于意大利比萨的数学家 莱昂纳多·斐波那契 完成了他的传世名著《算盘书》,书中对一个有趣的 “兔子繁殖问题” 进行了研究,斐波那契数列便由此而来。 兔子繁殖问题实际上是 斐波那契 提出的一个数学模型: 假定一对大兔子一年生一对小兔 一对小兔子一年后长大成为一对大兔子 且所有的兔子都长生不死 那么这些兔子是按照什么样的规律繁殖的呢? 第一年, 只有一对小兔子, f(1) =...转载 2020-04-05 16:25:41 · 1587 阅读 · 1 评论 -
寻找最长回文字符串扩展及优化
中心扩展法 从字符串中间向两边扩散寻找最长的回文字符串。分为两种情况字符串长度位奇数和偶数,比如 aba奇数,从下标为1处开始向两边寻找,可以找到最大回文;abba偶数从下标为1和2开始寻找,可以找到最大回文。 代码实现: public class Main{ // 输出最后一个最大的回文串 private static List<String> getLargeLength(St...原创 2020-03-28 23:14:11 · 248 阅读 · 0 评论 -
排序算法- 快速排序
快速排序 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序的最坏运行情况是 O(n²),比如说顺序数列的快排。但它的平均期望时间是 O(nlogn),且 O(nlogn) 记号中隐含的常数因子很小,比复杂度稳定等于 O(n...转载 2020-03-28 19:04:57 · 195 阅读 · 0 评论 -
排序算法- 冒泡排序、插入排序、选择排序、归并排序
各种排序算法的时间复杂度表 冒泡排序 冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。 算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。 放个动图方便理解: 代码实现: public class Bub...原创 2020-03-28 16:26:42 · 513 阅读 · 0 评论