《趣题学算法》 Get The Inversion 计算逆序数

//
//  Get The Inversion.cpp
//  laboratory
//
//  Created by 徐子珊 on 15/12/22.
//  Copyright © 2015年 xu_zishan. All rights reserved.
//

#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
//#include "filepath.h"
int getTheInversion(vector<int> A){
    int N = int(A.size());
    int count = 0;
    for (int j = N - 1; j > 0; j--)
        for (int i = 0; i < j; i++)
            if (A[i] > A[j])
                count++;
    return count;
}

int main() {
    //string basePath = "C:\\Users\\Administrator\\source\\repos\\Project2\\Project2";
    ifstream inputdata("inputdata.txt");
    ofstream outputdata("outputdata.txt");
    int N = 0;
    inputdata >> N;
    while (N > 0) {
        vector<int> A(N);
        for (int i = 0; i < N; i++)
            inputdata >> A[i];
        int result = getTheInversion(A);
        cout << result << endl;
        outputdata << result << endl;
        inputdata >> N;
    }
    inputdata.close();
    outputdata.close();
    return 0;
}

1 2 3        这3个数从小到大依次排列,逆序数为0

2 1           这2个数逆序排列,逆序数为1

3 2 4 1 5  这5个数逆序排列组为【32】 【31】 【21】 【41】 ,逆序数为4

 

 

 

本书使用了ifstream、ofstream文件处理方法。

为了摆脱文件,可以使用控制台输入输出。

posted @ 2021-12-03 00:10  caedmom  阅读(39)  评论(0编辑  收藏  举报