51NOD 1019 逆序数

逆序数

分析

  1. 逆序数的意义:就是选择排序中对元素交换的次数。
  2. 普通的比较时间复杂度都是O(N^2),肯定是不能通过的。
  3. 需要一种O(NlgN)的排序算法

利用归并排序

import java.io.*;
import java.util.*;

public class modp {
    public static int sum =0;
    public static int a[] = new int[50010];
    public static int b[] = new int[50010];
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        PrintWriter out = new PrintWriter(System.out);
        int n = 0;
        n = in.nextInt();
        for(int i=0;i<n;i++) {
            a[i] = in.nextInt();
        }
        merge_sort(0, n-1);
        out.println();
        out.flush();
    }
    public static void merge_sort(int low, int high) {
        if(low >= high)
            return ;
        int mid = (low + high) / 2;
        merge_sort(low, mid);
        merge_sort(mid+1, high);
        merge(low, mid, high);
    }
    public static void merge(int low, int mid, int high) {
        int i = low;
        int j = mid+1;
        for(int k=low;k<=high;k++) {
            b[k] = a[k];
        }
        for(int k=low;k<=high;k++) {
            if(i > mid)
                b[k] = a[j++];
            else if(j > high)
                b[k] = a[i++];
            
            else if(a[i] <= a[j])
                b[k] = a[i++];
            else {
                b[k] = a[j++];
                sum += mid-i+1;  //from i to mid,all numbers are bigger than j.
            }
        }
        for(int k=low;k<=high;k++) {  //error1:忘记对原数组重新赋值
            a[k] = b[k];
        }
    }
}
/*
4
2
4
3
1 
 */

代码的效率还是不高


运行时间.png

收获

eclipse设置断点

设置断点.png
  • 在该行最右边行数处点击右键,选择Toggle Breakpoint。


    debug.png
  • 点击小虫子图标,进入Debug模式
  • F5:Step into/进入该行的函数内部
    F6:Step over/一行一行执行
    F7:Step return/退出当前的函数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...
    Leesper阅读 2,548评论 0 40
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • XCode使用一:Xcode基本操作 传送至原文地址 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格...
    无名小鱼会吐火阅读 29,622评论 0 23
  • 【转载】曾梦想仗剑走天涯 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)->边...
    06a6a973d7ab阅读 3,895评论 2 20
  • 清朝康熙年间有个大学士名叫张英。一天张英收到家信,说家人为了争三尺宽的宅基地,与邻居发生纠纷,要他利用职权疏通关系...
    嶒經哋嶒經阅读 428评论 0 0