AcWing 788. 逆序对的数量_Java

简介: AcWing 788. 逆序对的数量_Java

活动 - AcWing

用暴力会超时,所以选择归并排序



 static int N=1000010;
    public static void main(String[] args)  {
        int []arr=new int[N];
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        for (int i = 0; i < n; i++) {
            arr[i]=sc.nextInt();
        }
        System.out.println(merge_sort(arr, 0, n - 1));
    }
    private static long merge_sort(int[] arr, int l, int r) {
        if(l>=r) return 0;
        int mid=l+r>>1;
        long result=0;
         int []s=new int[r-l+1];
        result=merge_sort(arr,l,mid)+merge_sort(arr,mid+1,r);
        int i=l,j=mid+1,k=0;
        while (i<=mid &&j<=r){
            if(arr[i]<=arr[j]) s[k++]=arr[i++];
            else{
                s[k++]=arr[j++];
                result+=mid-i+1;
            }
        }
        while (i<=mid) s[k++]=arr[i++];
        while (j<=r) s[k++]=arr[j++];
        for (i = l, k = 0; i <= r; i++, k++) {
            arr[i] = s[k];
        }
        return result;
    }
相关文章
|
人工智能 算法 Java
算法_逆序对_归并(java)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
|
算法 搜索推荐 Java
剑指 Offer 51:数组中的逆序对 (Java分治思想)
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
334 0
|
人工智能 算法 Java
逆序对(逆序对问题) 分而治之方法(分治法)java代码实现完整版(递归实现)
逆序对(逆序对问题) 分而治之方法(分治法)java代码实现完整版(递归实现)
613 0
逆序对(逆序对问题) 分而治之方法(分治法)java代码实现完整版(递归实现)
|
7月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
389 2
|
7月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
362 1
|
8月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
350 0
|
8月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
534 16
|
9月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。