美文网首页
51NOD 1019 逆序数

51NOD 1019 逆序数

作者: 3bd9251f5e09 | 来源:发表于2018-04-10 21:26 被阅读0次

逆序数

分析

  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/退出当前的函数

相关文章

  • 51NOD 1019 逆序数

    逆序数 分析 逆序数的意义:就是选择排序中对元素交换的次数。 普通的比较时间复杂度都是O(N^2),肯定是不能通过...

  • 进制转换 | 1019 General Palindromic

    1019题目链接

  • 贪心算法 & 动态规划基础题

    [TOC] acm 标签(空格分隔): acm 贪心算法 51Nod 1191消灭兔子 越好,故对兔子血量升序排列...

  • 欧洲游费用计算

    王:苏黎世住宿1019元 因特拉肯住宿1716元 打车123.7元 超市392元 火锅720元 共计:1019+1...

  • 数据结构与算法 - 逆波兰表达式求值

    LeetCode 算法练习集合(Swift版)目录逆波兰表达式求值合并两个有序链表 <==> 类似于合并两个有序数...

  • 1019

    最近明白了一个道理:只有有欲望却不行动的时候才会心情不好,因为对自己的表现不满意。如果自己有时间,有想法,那就去行...

  • 1019

    心理授权:给员工心理授权,让他们感到自己是有价值,有意义的存在着。 我所做的工作对我来说还算有意义,是自己想做的...

  • 1019

    今天娃的病好了不少,我很开心 过去,我就知道女人在家带孩子其实是很辛苦的,这方面只要想想,我妈是怎么把我带大的就能...

  • 1019

    //1019 数字黑洞(20 分)//给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递...

  • 1019

    过得好的人是适应能力强的人 在职场像男人一样奋斗 在家里像女人一样温暖 做女儿时孝而不顺 做妈妈时爱而不骄 价值观...

网友评论

      本文标题:51NOD 1019 逆序数

      本文链接:https://www.haomeiwen.com/subject/mglwhftx.html