• 求数组的逆序对


    #include<iostream>
    #include<vector>
    using namespace std;
    
    void merge(vector<int>&input, int left, int right, int mid, vector<int>&temp,int &count){
        int i = left;
        int j = mid+1;
        int t = 0;//t=left也可以,因为最终都是要赋值给input[left]
        
        while (i<=mid&&j<=right){
            if (input[i] > input[j]){
                temp[t++] = input[j++];
                count += mid+1-i;//input[i]>input[j]时,左边比input[i]大的均与input[j]构成逆序对,总共mid+1-i
            }
            else{
                temp[t++] = input[i++];
            }
        }
        while (i <= mid){
            temp[t++] = input[i++];
        }
        while (j <= right){
            temp[t++] = input[j++];
        }
        t = 0;//t=left
        while (left <= right){
            input[left++] = temp[t++];
        }
        
    }
    
    void mergesort(vector<int>&input, int left, int right, vector<int>&temp,int &count){
        if (left < right){
            int mid = (left + right) / 2;
            mergesort(input, left, mid, temp,count);
            mergesort(input, mid + 1, right, temp,count);
            merge(input, left, right, mid, temp,count);
        }
    }
    int main(){
        vector<int>a = { 7,2,5,4};
        vector<int>b(a.size(), 0);
        
        int count = 0;
        mergesort(a, 0, a.size() - 1, b,count);
        for (int i = 0; i < a.size(); i++){
            cout << a[i] << endl;
        }
        
        cout << count << endl;
        system("pause");
        return 0;
    }
  • 相关阅读:
    结构体
    Springmvc中异常处理
    SpringMVC的Controller方法返回值的3种类型
    SpringMVC的参数绑定
    @RequestParam用法与@PathVariable用法的区别
    springMVC架构(三大组件)
    springMVC入门程序开发步骤
    @RequestMapping的三个用法
    web.xml标签
    小笔记2(Servlet)
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9073740.html
Copyright © 2020-2023  润新知