【数据结构】考研真题攻克与重点知识点剖析 - 第 8 篇:排序

news2024/11/27 3:46:49

前言

  • 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。
  • 此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术有限,最终数据清洗结果不够理想,相关CSDN文章便没有发出。

(考研真题待更新)

欢迎订阅专栏:408直通车

请注意,本文中的部分内容来自网络搜集和个人实践,如有任何错误,请随时向我们提出批评和指正。本文仅供学习和交流使用,不涉及任何商业目的。如果因本文内容引发版权或侵权问题,请通过私信告知我们,我们将立即予以删除。

文章目录

  • 前言
  • 第八章 排序
    • 概述
      • 排序
      • 算法的稳定性
      • 根据数据是否在内存中进行分类
        • 小结
    • 插入排序
      • 直接插入排序
      • 折半插入排序
        • 小结
      • 希尔排序
        • 小结
    • 交换排序
      • 概述
      • 冒泡排序
        • 小结
      • 快速排序
    • 选择排序
      • 概述
      • 简单选择排序
        • 小结
      • 堆排序
        • 小结
      • 堆的插入删除
        • 插入
        • 删除
    • 二路归并排序
      • 实现过程
    • 基数排序
      • 基本概念
      • 实现过程
      • 性能分析
      • 稳定性
      • 应用
      • 补充
    • 排序算法的分析
      • 结论
    • 外部排序
      • 外部排序基本概念
        • 构造初始“归并段"
        • 第一趟归并
        • 第二趟归并
        • 第三趟归并
      • 外部排序的方法
      • 优化(都减少归并趟数s,减少磁盘读写次数)
      • 多路平衡归并与败者树
      • 置换-选择排序(生成初始归并段)
      • 最佳归并树(k叉哈夫曼树)
    • 代码
      • 快排
      • 归并
      • 二分查找(可用于折半)

第八章 排序

概述

排序

  • 将无序序列排成一个有序序列的运算(如果排序的数据结点包含多个数据域,排序针对一个域)
    在这里插入图片描述

算法的稳定性

  • 能够使任何数值相等的元素,排序以后相对次序不变

  • 稳定性只对结构类型数据排序有意义,例:先按数学成绩排序,再按总分排序
    在这里插入图片描述

根据数据是否在内存中进行分类

  • 内部排序

    • 在排序期间元素全部存放在内存中的排序
  • 外部排序

    • 在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据要求不断地在内、外存之间移动的排序
      在这里插入图片描述
小结

在这里插入图片描述

插入排序

直接插入排序

  • 概念

    • 首先以一个元素为有序的序列,然后讲后面的元素依次插入到有序的序列中适合的位置直到所有元素都插入有序序列在这里插入图片描述
  • 实现过程

    • 在这里插入图片描述

      • 排序某时刻将待排序表分割为三部分,顺序查出L(i)在L[1…i-1]的插入位置k

      • 将L[k…i-1]中的所有元素依次后移一个位置,将L(i)复制到L(k)

    • 哨兵

      • 在这里插入图片描述
        在这里插入图片描述
  • 性能分析在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    • 时间复杂度(平均):O(n^2)

      • 最好(有序):O(n)

        • 最坏(逆序):O(n^2)
    • 空间复杂度:O(1)

  • 稳定性

    • 稳定
  • 补充提高速度

    • 减少元素比较次数,引入折半插入排序

    • 减少元素的移动次数,引入希尔排序,每次移动步幅增大

折半插入排序

在这里插入图片描述

  • 实现过程

    • 首先确定折半插入排序的范围,利用折半查找找到插入的位置,然后一次性对数据进行移动,最后插入该元素
  • 性能分析

    • 时间复杂度:比较次数减少O(nlogn),移动次数不变,整体O(n^2)

    • 空间复杂度:O(1)

  • 稳定性

    • 稳定

在这里插入图片描述

小结

在这里插入图片描述

希尔排序

在这里插入图片描述

  • 概念

    • 本质上还是插入排序,只是把待排序列分成几个子序列,分别对子序列进行直接插入排序
  • 实现过程

    • 先取一个小于n的步长d,把表中数据分为d组,所有距离为d的倍数记录在同一组,组内进行直接插入排序

    • 缩小步长d,不断重复直到d=1为止

    • 若d=5,跨越6个数在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

  • 性能分析在这里插入图片描述

    • 时间复杂度(平均):O(n^1.3)

      • 最坏:O(n^2)
    • 空间复杂度:O(1)

  • 稳定性

    • 不稳定
      在这里插入图片描述
小结

在这里插入图片描述

交换排序

概述

  • 根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置

冒泡排序

在这里插入图片描述

  • 实现过程

    • 从前往后(从后往前)两两比较相邻元素的值,若逆序则交换,直到序列比较完

    • 每一趟会将最大的元素交换到待排序列最后一个位置(将较小的元素交换到待排序列第一个位置)

    • 进行下一趟排序,前一趟确定元素不参与

    • 如果某一趟排序过程中未发生交换,则可以提前结束

  • 性能分析在这里插入图片描述

    • 时间复杂度(平均):O(n^2)

      • 最好:O(n)

        • 最坏:O(n^2)
    • 空间复杂度:O(1)

  • 稳定性

    • 稳定
  • 补充

    • 冒泡排序产生的有序子序列一定全局有序,即每趟会将一个元素放到最终的位置上
      在这里插入图片描述
小结

在这里插入图片描述

快速排序

  • 实现过程

    • 首先选取一个元素作为枢轴,以枢轴为界将排序表分为两个部分,左边小于枢轴,右边大于枢轴

    • 然后对着两部分分别递归重复上述步骤,直到每个部分内只有一个元素或空为止
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

  • 性能分析

    • 时间复杂度

      • 快速排序的运行时间与划分是否对称有关,应尽量选取可以将数据中分的枢轴元素(想象一颗二叉树)

      • 最好情况:待排序列越无序,算法效率越高:O(nlog2n)

      • 最坏情况:待排序列越有序,算法效率越高:O(n^2)

      • 平均情况:快速排序平均情况下与最优情况下运行时间很接近,是所有内部排序算法中平均时间最优的排序算法
        在这里插入图片描述

    • 空间复杂度(平均):O(log2n)在这里插入图片描述
      在这里插入图片描述

      • 最好:O(log2n)

        • 最坏:O(n)
  • 稳定性

    • 不稳定
  • 优化:划分均匀

    • 选头中尾三个位置的元素,取中间值为枢轴元素

    • 随机选一个元素作为枢轴元素

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

选择排序

概述

  • 每一趟(如第i躺)在后面n-i+1(i=1,2,…,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟完成

  • 选择排序的时间性能不随记录序列中关键字的分布而改变

简单选择排序

在这里插入图片描述

  • 实现过程

    • 假设排序表为L[1…n],第i躺排序,即从L[1…n]中选择关键字最小的元素与L(i)交换

    • i每次增加,每趟排序可以确定一个元素的最终位置
      在这里插入图片描述

  • 性能分析

    • 时间复杂度:O(n^2)

    • 空间复杂度:O(1)
      在这里插入图片描述

  • 稳定性

    • 不稳定
      在这里插入图片描述
小结

在这里插入图片描述

堆排序

  • 基本概念
    在这里插入图片描述

      • 堆是一棵完全二叉树,而且满足任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值
    • 大根堆在这里插入图片描述

      • 每个结点的值都不小于它的左右孩子结点的值
    • 小根堆在这里插入图片描述

      • 每个结点的值都不大于它的左右孩子结点的值
        在这里插入图片描述
  • 实现过程

    • 建大(小)根堆:O(n)在这里插入图片描述

      • 从后向前调整所有非终端结点,使其满足堆的性质[0, ⌊n/2⌋]

      • 检查是否根大于(小于)等于左右孩子,小(大)元素不断下坠(下坠过程需不断检查与左右孩子的大小)在这里插入图片描述

    • 调整大(小)根堆:O(nlog2n)

      • 将最大(小)根结点与最后一个结点互换

      • 按建堆过程调整结点在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
        在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 性能分析在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    • 时间复杂度:O(nlog2n)

    • 空间复杂度:O(1)

  • 稳定性在这里插入图片描述在这里插入图片描述

    • 不稳定
小结

在这里插入图片描述

在这里插入图片描述

堆的插入删除

插入

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

删除

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

二路归并排序

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

实现过程

  • 假定待排序表有n个记录,可以看成n个有序子表,每个子表长度1,两两归并,得到⌈n/2⌉个长度为2或1的有序表,再两两归并,直到合并为长度n的有序表

  • 在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    • 性能分析在这里插入图片描述

      • 时间复杂度:O(nlog2n)

      • 空间复杂度:O(n)

    • 稳定性

      • 稳定
    • 特点

      • 比较次数与初始状态无关

      • 只有归并排序O(nlog2n)且稳定
        在这里插入图片描述

基数排序

基本概念

  • 最高位优先(MSD)法:按关键字位权重递减依次逐层划分成若干更小的子序列,最后将所有子序列依次连接成一个有序序列

  • 最低位优先(LSD)法:按关键字位权重递增依次进行排序,最后形成一个有序序列

实现过程

  • 采用多关键字排序思想(即基于关键字各位的大小进行排序的),借助“分配”和“收集”两种操作对单逻辑关键字进行排序,直到所有关键字均已排序完毕
    在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

性能分析

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 时间复杂度

    • 基数排序需要进行k躺分配和收集,一趟分配需要O(n),一趟收集需要O(m),所以时间复杂度为O(k(n+m))
  • 空间复杂度

    • 链式存储(王道):O(m),一趟需要辅助存储空间m(m个桶的头尾指针)

    • 顺序存储:O(n+m),桶+临时存放数组

稳定性

  • 稳定
    在这里插入图片描述

应用

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 关键字便于分k组,即k较小时

  • 每组关键字取值范围不大,即m较少时

  • 元素个数n较大时

补充

  • 对数字排序时,仅能使用最低位优先法,若高位优先,最后排低位时会打乱顺序

排序算法的分析

  • 在这里插入图片描述

  • 王道书中基数排序,d为待排元素的维度,r为基数的个数,空间复杂度王道采用链式存储,故额外空间仅每个桶的头尾指针

结论

  • 若文件初始状态接近有序,则选用直接排序或冒泡排序为宜

  • 要求排序稳定且时间复杂度O(nlog2n),则选用归并排序

  • 若n很大,记录关键字位数较少且可分解时,采用基数排序

  • 当记录信息量较大,为避免消耗大量时间移动记录,可用链表作为存储结构

  • 简单选择排序、堆排序、归并排序的时间性能不随记录序列中关键字的分布而改变

外部排序

在这里插入图片描述

外部排序基本概念

在这里插入图片描述

构造初始“归并段"

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

第一趟归并

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

第二趟归并

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

第三趟归并

在这里插入图片描述在这里插入图片描述

  • 对大文件进行排序,因为文件中的记录很多、信息量庞大,无法将整个文件复制到内存进行排序

  • 需要将待排序的记录存储在外存上,排序时再把数据一部分一部分地调入内存进行排序,在排序过程中需要多次进行内存和外存的交换

外部排序的方法

  • 基本概念

    • 文件通常是按块存储在磁盘上的,操作系统也按块读写

    • 外部排序过程中的时间代价主要考虑访存次数(I/O次数)

  • 步骤(采用归并排序)

    • 生成r个初始归并段(内部排序)

      • 根据内存缓冲区大小,将外存文件分为r个子文件,依次读入内存并利用内部排序方法进行排序,并将内部有序的子文件重新写回外存
    • 进行s躺k路归并

      • s = ⌈logk r⌉

      • k路归并

        • 将k个归并段的块读入k个输入缓冲区

        • 用归并排序从k个归并段中选出几个最小记录暂存到输出缓冲区中

        • 当输出缓冲区满时,写出外存

        • 性质

          • 每趟归并中,最多只有k个段归并为一个

          • 若总共有m个归并段参与,s趟归并后,得⌈m/k⌉新归并段

          • 若要进行k路归并排序,内存需要1个输出缓冲区 + k个输入

  • 时间开销

    • 读写外存时间+内部排序所需时间+内部归并所需时间
      在这里插入图片描述

优化(都减少归并趟数s,减少磁盘读写次数)

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 增大归并路数k,进行多路平衡归并

    • 代价1:需要增加相应的输入缓冲区

    • 代价2:每次从k个归并段中选一个最小元素需要(k-1)次关键字比较

  • 减少初始归并段个数r

在这里插入图片描述在这里插入图片描述在这里插入图片描述

多路平衡归并与败者树

  • 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    • 引入

      • 为了减少优化1代价2,减少每次k个归并段找最小关键字的比较次数
    • 思想

      • k个叶结点分布存放k个归并段在归并过程中当前参加比较的记录,非叶结点用了记忆左右子树中“失败者”(记录段号),让胜者往上继续进行比较,直到根结点
    • 性能

      • k路归并的败者树深度⌈log2 k⌉

      • 总的比较次数由(n-1)(k-1)减少到(n-1)⌈log2 k⌉

    • 注意:归并路数k过大时,虽然趟数减少,但读写外存次数仍会增加

置换-选择排序(生成初始归并段)

在这里插入图片描述

  • 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    • 引入

      • 即优化2:减少初始归并段数量r
    • 实现:如图红字

在这里插入图片描述

在这里插入图片描述

最佳归并树(k叉哈夫曼树)

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 引入

    • 为减少磁盘I/O次数(归并段读入读出,合并先后次序)
  • 结构概述

    • 叶结点表示初始归并段,权值表示该归并段的长度;非叶结点代表归并形成的新归并段

    • 叶结点到根的路径长度表示其参加归并的趟数

    • 归并树的带权路径长度WPL为归并过程中的总读记录数

    • 归并过程中的磁盘I/O次数 = 归并树的WPL * 2

    • 构造

      • 补充虚段

        • 若(初始归并段数量-1) % (k-1) = 0,说明刚好可以构成严格k叉树,此时无需添加虚段

        • 若(初始归并段数量-1) % (k-1) = u != 0,则需要补充(k-1) - u个虚段

      • 构造k叉哈夫曼树

        • 每次选择k个根结点权值最小的树合并,并将k个根结点的权值之和作为新的根结点的权值

代码

快排

  • 思路:基于分治思想
  1. 确定分界点(取左边界,去中间点,随机取)

  2. 调整区间,分<x与>x两部分分别是[l, j]、[j+1, r]

  3. 递归左右

    •   void quick_sort(vector<int>&q, int l, int r)
        {
            if (l >= r) return;                                        //注意这里是>=
            int i = l - 1, j = r + 1, x = q[l + r >> 1];
            while (i < j)
            {
                while (q[++i] < x);                                  //注意这里无论结果如何i都会+1,故初始化时i=l-1,且才能跳出循环
                while (q[--j] > x);
                if (i < j) swap(q[i], q[j]);
            }
            quick_sort(q, l, j), quick_sort(q, j + 1, r);
        }
      

归并

  • 思路:基于分治思想
  1. 确定分界点: 中间点 mid=l+r>>1

  2. 递归分界点左右

  3. 归并

    •   void merge_sort(int q[], int l, int r)
        {
            if (l >= r) return;                                                           //return边界
            int mid = l + r >> 1;
            merge_sort(q, l, mid);                                                    //排序左半
            merge_sort(q, mid + 1, r);                                             //排序右半
        
            int k = 0, i = l, j = mid + 1;                                          //将i,j分别指向两数组第一个元素
            while (i <= mid && j <= r)                                         //若两数组都没结束,选小的进
                if (q[i] <= q[j]) tmp[k ++ ] = q[i ++ ];
                else tmp[k ++ ] = q[j ++ ];
        
            while (i <= mid) tmp[k ++ ] = q[i ++ ];                     //一数组结束,另外一数组剩下元素依次进
            while (j <= r) tmp[k ++ ] = q[j ++ ];
        
            for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j];
        }
      

二分查找(可用于折半)

  • 本质:可以划分为满足某种性质与不满足某种性质的两个区间,用二分法可以找到两区间边界的左右两个点。

    •   int bsearch_1(int l, int r)                     //寻找右边界
        {
            while (l < r)
            {
                int mid = l + r + 1 >> 1;           //右边界需+1
                if (q[mid]>k) r = mid-1;             //mid不满足<=,直接将右边界置mid左边
                else l = mid;                               //左边界一点点贴近右边界
            }
            return l;
        }
        int bsearch_2(int l, int r)                   //寻找左边界,同理
        {
            while (l < r)
            {
                int mid = l + r >> 1;
                if (q[mid]<k) l = mid+1;
                else r = mid;
            }
            return l;
        }
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1579873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java每日一题

我的思路: 1.排序 2.固定一个数&#xff0c;然后将问题转换为俩个数之和为固定数的相反数 3.在固定数&#xff0c;后面利用"双指针算法"快速找到两个的和等于-a即可 4.处理这个题的细节问题 1.去重 找到一个结果之后&#xff0c;将left和right指针要跳过前面的重复元…

MLOps 体系结构模型

人工智能继续改变企业&#xff0c;但这导致企业在数字化转型和组织变革方面面临新的挑战。根据 2023 年福布斯报告&#xff0c;这些挑战可以总结如下&#xff1a; 分析技术堆栈围绕分析/批处理工作负载构建的公司需要开始适应实时数据处理&#xff08;福布斯&#xff09;。这种…

【保姆级讲解PyCharm安装教程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

js获取上周本周下周的日期(附Demo)

目录 前言1. 基本知识2. Demo3. 彩蛋 前言 现在的时间点是&#xff1a;2024-04-08&#xff0c;对应的日期如下&#xff08;上周、这周、下周&#xff09; 1. 基本知识 讲述Demo之前&#xff0c;先补充一些基础知识 JavaScript 中的 Date 对象是用于处理日期和时间的对象。它…

博客系统实现

一.准备工作 1.创建项目&#xff0c;把前端写好的博客静态页面拷贝到webapp目录中 2.引入依赖&#xff0c;这里主要用到servlet&#xff0c;mysql5.1.47&#xff0c;jacson2.15.0 3.找到右上角的edit configurations->smartTomcat->进行配置 4.数据库设计&#xff1a…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上&#xff0c;开发出了一款基于经典街机游戏《街头霸王III》的人工智能&#xff08;AI&#xff09;基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发&#xff0c;游戏在模拟器中运行&#xf…

【力扣刷题日记】1495.上月播放的儿童适宜电影

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1495.上月播放的儿童适宜电影 表&#xff1a;TVProgram 列名类型program_datedatecontent_idintchannelvarc…

【机器学习】深入解析机器学习基础

在本篇深入探讨中&#xff0c;我们将揭开机器学习背后的基础原理&#xff0c;这不仅包括其数学框架&#xff0c;更涵盖了从实际应用到理论探索的全方位视角。机器学习作为数据科学的重要分支&#xff0c;其力量来源于算法的能力&#xff0c;这些算法能够从数据中学习并做出预测…

产品推荐 | 基于Intel(Altera)Arria 10 10AS027/048打造的水星Mercury+ AA1核心板

01 产品概述 水星Mercury AA1片上系统&#xff08;SoC&#xff09;核心板通过结合基于ARM处理器的SoC FPGA、快速DDR4 ECC SDRAM、eMMC flash、QSPI flash、Gigabit Ethernet PHY和RTC形成了一个高性能嵌入式处理方案&#xff0c;结合了CPU系统的灵活性和FPGA原始的、实时的并…

【PolarDB-X从入门到精通】 第四讲:一站式学习源码部署

亲爱的同学们&#xff1a; 大家好&#xff01;在之前的课程中&#xff0c;我们已经初步了解了PolarDB-X的架构、安装部署PolarDB-X的四种方式以及如何使用Docker和PXD进行安装部署。接下来&#xff0c;我们将进入更加专业的领域——源码编译部署PolarDB-X。 课程主题&#xf…

YOLOV8注意力改进方法:DilateFormer多尺度空洞 Transformer(附改进代码)

原论文地址:原论文下载地址 即插即用的多尺度全局注意力机制 本文提出了一种新颖的多尺度空洞 Transformer,简称DilateFormer,以用于视觉识别任务。原有的 ViT 模型在计算复杂性和感受野大小之间的权衡上存在矛盾。众所周知,ViT 模型使用全局注意力机制,能够在任意图像块…

C语言 函数——函数原型

目录 如何合并成一个完整的程序&#xff1f; 函数原型与函数定义的区别 函数原型的作用 如何合并成一个完整的程序&#xff1f; 问题&#xff1a;在一个函数中调用另一个函数&#xff0c;需要具备哪些条件呢&#xff1f; 若函数的定义出现在函数调用之前 若函数的定义出现…

Java绘图坐标体系

一、介绍 下图说明了Java坐标系。坐标原点位于左上角&#xff0c;以像素为单位。在Java坐标系中&#xff0c;第一个是x坐标&#xff0c;表示当前位置为水平方向&#xff0c;距离坐标原点x个像素&#xff1b;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐…

对OceanBase中的配置项与系统变量,合法性检查实践

在“OceanBase 配置项&系统变量实现及应用详解”的系列文章中&#xff0c;我们已经对配置项和系统变量的源码进行了解析。当涉及到新增配置项或系统变量时&#xff0c;通常会为其指定一个明确的取值范围或定义一个专门的合法性检查函数。本文将详细阐述在不同情境下&#x…

自动驾驶中的传感器融合算法:卡尔曼滤波器和扩展卡尔曼滤波器

自动驾驶中的传感器融合算法&#xff1a;卡尔曼滤波器和扩展卡尔曼滤波器 附赠自动驾驶学习资料和量产经验&#xff1a;链接 介绍&#xff1a; 追踪静止和移动的目标是自动驾驶技术领域最为需要的核心技术之一。来源于多种传感器的信号&#xff0c;包括摄像头&#xff0c;雷达…

设计模式系列:单例模式

作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 定义 单例&#xff08;Singleton&#xff09;模式的定…

CentOS7.9创建本地yum源操作步骤报错解决方法

1.基础信息 CentOS7.9-mini最小化安装的系统&#xff0c;在离线安装rpm时候需要大量依赖&#xff0c;需要花费大量时间去查找依赖包。受于环境限制无法接入互联网使用公开yum源&#xff0c;于是便有了搭建本机yum源的想法&#xff0c;在网上下载CentOS7.9标准版“CentOS-7-x86_…

代码随想录阅读笔记-回溯【组合】

题目 给定两个整数 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 思路 本题是回溯法的经典题目。 直接的解法当然是使用for循环&#xff0c;例如示例中k为2&#xff0c;很容…

查分约束学习

问题模型&#xff1a; 有n个变量&#xff1a;&#xff0c;有m个约束条件 令差分数组&#xff0c;可以知道如果x1x2<q&#xff0c;那么与j和i-1有关联 由画图可知&#xff0c;如果有在i-1至j建立的有向图中跑最短路&#xff0c;那么dis[n]即为最小的约束变量 另外&#x…

javaWeb车辆管理系统设计与实现

摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。 企业车辆管理系统运用现代化的计算机管理手段&#xff0c;不但可以对车辆的使用进行合理的管理&#xff0c;…