zoukankan      html  css  js  c++  java
  • POJ2299: Ultra-QuickSort-合并排序解决逆序数问题

     1 #include<iostream>
     2 #include<malloc.h>
     3 using namespace std;
     4 long long ans;
     5 void merge(int *a,int le,int mid,int rt){
     6     int *sort_data=(int *)malloc(sizeof(int)*(rt-le+1));
     7     if(!sort_data) return;
     8     int i=le,j=mid+1,pt=0;
     9     while(i<=mid&&j<=rt){
    10         if(a[i]<=a[j]){
    11             sort_data[pt++]=a[i++];
    12         }
    13         else{//exist swap action
    14             sort_data[pt++]=a[j++];
    15             /*
    16                 once we swap the postion of both the a[i] and a[j],
    17                 we do change the positon of a[i+1......mid]
    18                 so as a result, we do change the postion of a[i,i+1,....mid].
    19             */
    20             ans+=mid-i+1;
    21         }
    22     }
    23     while(i<=mid){
    24         sort_data[pt++]=a[i++];
    25     }
    26     while(j<=rt){
    27         sort_data[pt++]=a[j++];
    28     }
    29     int p;
    30     for(int i=le,p=0;i<=rt;i++,p++){
    31         a[i]=sort_data[p];
    32     }
    33 }
    34 void mergeSort(int a[],int st,int ed){
    35     if(st<ed){
    36         int mid=(st+ed)/2;
    37         mergeSort(a,st,mid);
    38         mergeSort(a,mid+1,ed);
    39         merge(a,st,mid,ed);
    40     }
    41 }
    42 int main(){
    43     int n,num[500010];
    44     while(scanf("%d",&n),n){
    45         ans=0;
    46         for(int i=0;i<n;i++){
    47             scanf("%d",&num[i]);
    48         } 
    49         mergeSort(num,0,n-1);
    50         printf("%I64d
    ",ans);
    51     }
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    SQL Server 全文搜索 配置、查询初体验
    SQL Server 触发器
    SQL Server 锁
    SQL Server 事务语法
    SQL Server 表变量和临时表的区别
    SQL Server系统存储过程
    SQL 语句转换格式函数Cast、Convert
    SQL Server 系统视图
    T-SQL 批处理
    SQL Server 分区表
  • 原文地址:https://www.cnblogs.com/fu11211129/p/4196187.html
Copyright © 2011-2022 走看看