逆序数计算
**
逆序数
**
今天学到线性代数的行列式,课后作业有算四阶行列式的,还没有学正确解法,只能硬解,
感觉可以用c实现逆序数判断正负,在本站找到c++函数,这里保存一下,下次有空用c写一个
#include<iostream>
using namespace std;
int n1 = 0, b[50];
int inversions(int a[], int n)//求逆序数
{
n = n - 1;//5个元素0~4,最高位是4
int i, j, ans = 0;
for (j = 0; j <= n; j++)//每一位"j"
for (i = j; i <= n; i++)//每位往后看逆序"从j到底与i比"
{
if (a[j] > a[i])
ans++;
}
return ans;
}
void StrToArr(char a[])//字符转整形
{
int i = 0;
while (a[i] != '\0')
{
b[i] = (int)a[i];
i++;
}
b[i] = a[i];//等同于b[i]='\0'
n1 = i;//取得总位数
}
int main()
{
int sum = 0;
char a[50];
cout << "请输入一串数字(不用空格,均单个按十以内算)" << endl;
gets_s(a);
StrToArr(a);
sum = inversions(b, n1);
cout << sum;
}