zoukankan      html  css  js  c++  java
  • 逆序数

    题目:https://vjudge.net/contest/378940#problem/A

    解析:这题用到了归并排序。

    代码:

    #include<bits/stdc++.h>
    #define max 1000001
    long long a[max],b[max];
    long long count;
    void Merge(long long a[],int start,int mid,int end)  //归并排序的合并部分
    {
    	int i=start,j=mid+1,k=start;
    	while(i<=mid&&j<=end)
    	{
    		if(a[i]<=a[j])
    		{
    			b[k++]=a[i++];
    		}
    		else
    		{
    			count+=j-k;//统计逆序数对
    			b[k++]=a[j++];
    		}
    	}
    	while(i<=mid)
    	{
    		b[k++]=a[i++];
    	}
    	while(j<=end)
    	{
    		b[k++]=a[j++];
    	}
    	for(int i=start;i<=end;i++)
    	{
    		a[i]=b[i];
    	}
    }
    void MergeSort(long long a[],int start,int end)  //归并排序
    {
    	if(start<end)
    	{
    		int mid=(start+end)/2;
    		MergeSort(a,start,mid);     // 将前半部分排序
    		MergeSort(a,mid+1,end);     // 将后半部分排序
    		Merge(a,start,mid,end);     // 合并前后两个部分
    	}
    }
    int main()
    {
    	int m;
    	scanf("%d",&m);
    	count=0;
    	for(int i=0;i<m;i++)
    	{
    		scanf("%d",a+i);
    	}
    	MergeSort(a,0,m-1);
    	printf("%lld
    ",count);
    }
    

      

    参考资料:

    1.https://blog.csdn.net/qq_40938077/article/details/85331296?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

    2.https://blog.csdn.net/weixin_40557407/article/details/82946489?utm_medium=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-1.nonecas

  • 相关阅读:
    数据库的复制与附加,备份与还原
    数据库类型,约束,索引,视图
    数据索引及函数
    数据库及表的操作
    SQL数据库的查询方法
    数据库(增、删、改、查)
    数据库的基础知识
    C#阶段小结
    【WinForm】创建自定义控件(转)
    C# 自定义控件制作和使用实例(winform)(转)
  • 原文地址:https://www.cnblogs.com/dragondragon/p/13370786.html
Copyright © 2011-2022 走看看