《趣题学算法》 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文件处理方法。
为了摆脱文件,可以使用控制台输入输出。
Notes:知识点滴积累,转载注明出处。

浙公网安备 33010602011771号