POJ 2299 Ultra-QuickSort (求序列的逆序对数)

本文介绍如何使用归并排序算法高效计算序列中的逆序对数量,即求解冒泡排序所需交换次数。通过具体实例说明归并过程中如何记录逆序对数,并给出AC代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:废话了一大堆就是要你去求一个序列冒泡排序所需的交换的次数。

思路:实际上是要你去求一个序列的逆序队数

看案例:

9 1 0 5 4
9后面比它小的的数有4个

1后面有1个

0后面没有

5后面1个

4后面没有

所以结果为4+1+0+1+0=6

所以逆序对的定义假设不清楚能够自己总结了

这道题说白了就是要你用归并排序求逆序对数。

以下是搜到某牛给的逆序对数的方法:

如果回溯到某一步,后面的两部分已经排好序(就是说当前须要归并的两个部分都是分别有序的)。如果这两个序列为

序列a1:2 3 5 9  

序列a2:1 4 6 8

此时我们的目的就是要将a1和a2合并为一个序列。

因为在没排序前a2序列一定所有都是在a1序列之后的,当我们比較a2的1与a1的2时,发现1<2依照归并的思想就会先记录下a2的1。而这里实际上就是对冒泡排序的优化,冒泡是将a2的1依次与a1的9,5,3,2交换就需要4次。而归并却仅仅有一次就完毕了。要怎么去记录这个4呢。实际上因为1比2小而2后面还有4个数,也就是说那我的结果就必需要+4,也就是记录a1序列找到第一个比a2某一个大的数。他后面还余下的数的个数就是要交换的次数。

我的AC代码(依照刘汝佳书思路来的,大神别喷 ==):

#include<stdio.h>
#include<string.h>
int n,a[500005],b[500005];
__int64 sum;
void merge_sort(int x,int y)
{
    if(y-x>1)
    {
        int m=x+(y-x)/2;
        int p=x,q=m,i=x;
        merge_sort(x,m);
        merge_sort(m,y);
        while(p<m||q<y)
        {
            if(q>=y||(p<m&&a[p]<=a[q]))
                b[i++]=a[p++];
            else
            {
                sum+=m-p;
                b[i++]=a[q++];
            }
        }
        for(i=x;i<y;i++)a[i]=b[i];
    }
}
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)break;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        sum=0;
        merge_sort(0,n);
        printf("%I64d\n",sum);
    }
    return 0;
}




内容概要:本文系统介绍了基于C#(VS2022+.NET Core)与HALCON 24.11的工业视觉测量拟合技术,涵盖边缘提取、几何拟合、精度优化及工业部署全流程。文中详细解析了亚像素边缘提取、Tukey抗噪算法、SVD平面拟合等核心技术,并提供了汽车零件孔径测量、PCB焊点共面性检测等典型应用场景的完整代码示例。通过GPU加速、EtherCAT同步等优化策略,实现了±0.01mm级测量精度,满足ISO 1101标准。此外,文章还探讨了深度学习、量子启发式算法等前沿技术的应用前景。 适合人群:具备一定编程基础,尤其是熟悉C#和HALCON的工程师或研究人员,以及从事工业视觉测量与自动化检测领域的技术人员。 使用场景及目标:①学习如何使用C#和HALCON实现高精度工业视觉测量系统的开发;②掌握边缘提取、抗差拟合、3D点云处理等核心技术的具体实现方法;③了解工业部署中的关键技术,如GPU加速、EtherCAT同步控制、实时数据看板等;④探索基于深度学习和量子计算的前沿技术在工业视觉中的应用。 其他说明:本文不仅提供了详细的理论分析和技术实现,还附有完整的代码示例和实验数据,帮助读者更好地理解和实践。同时,文中提到的硬件选型、校准方法、精度验证等内容,为实际项目实施提供了重要参考。文章最后还给出了未来的技术演进方向和开发者行动建议,如量子-经典混合计算、自监督学习等,以及参与HALCON官方认证和开源社区的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值