Advertisement

C/C++课程中,log2000为春季学期2017年的算法实验(1-3)

阅读量:

分治策略解决逆序对问题

对于一个整数序列A=(A1,A2,…An),当满足i<j且Ai>Aj时,<I,j>将构成一个逆序对。数组长度n的取值范围为1≤n≤30000。例如,在数组(3,1,4,5,2)中,存在的逆序对包括<3,1>、<3,2>、<4,2>以及<5,2>。

输入内容包含两个部分:整数n和数组A。

输出结果为逆序对的总数。


示例输入:
5
3 1 4 5 2

示例输出:
4


asw:

复制代码
    #include<stdio.h>
    #define M 100
    int main()
    {
    int i, j;
    int size;
    int data[M];
    scanf("%d",&size);
    int result=0; //计算出的逆序对数
    for (j = 0; j<size; j++) scanf("%d",&data[j]);
    for(i = 0; i < size; ++i)
    {
        for(j = i+1; j < size; ++j)
        {
            if(data[i] > data[j])
            {
                ++result;

全部评论 (0)

还没有任何评论哟~