每日一道算法题之求排列的逆序数
- 一、题目描述
- 二、思路
- 三、C++代码
一、题目描述
一个排列含有逆序的个数称为这个排列的逆序数。例如排列 263451 含有8个逆序(2,1),(6,3),(6,4),(6,5),(6,1),(3,1),(4,1),(5,1),因此该排列的逆序数就是8。显然,由1,2,…,n 构成的所有n!个排列中,最小的逆序数是0,对应的排列就是1,2,…,n;最大的逆序数是n(n-1)/2,对应的排列就是n,(n-1),…,2,1。逆序数越大的排列与原始排列的差异度就越大。现给定1,2,…,n的一个排列,求它的逆序数。
C++程序要求输入输出如下:
输入
第一行是一个整数n,表示该排列有n个数(n 第二行是n个不同的正整数,之间以空格隔开,表示该排列。
输出
输出该排列的逆序数。
示例如下:
输入:6 输出:8
2 6 3 4 5 1
二、思路
直接暴力法。
三、C++代码
#include
using namespace std;
//求排列的逆序数
const int maxsize=1000;
int a[maxsize];
int main(){
int n;
cin>>n;
服务器托管网for(int i=0;in;i++){
cin>>a[i];
服务器托管网 }
int number=0;
for(int i=0;in-1;i++){
for(int j=i+1;jn;j++){
if(a[j]a[i]){
number++;
}
}
}
coutnumber;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net