【线性代数】求逆序数
【线性代数】求逆序数
1 #include<iostream>
2 using namespace std;
3 //求逆序数
4 //默认逆序排序的标准序列为:由小到大
5 class reversed_order
6 {
7 public :
8 void num(int newN);
9 private:
10 int array_Num[11],temp,numb,result;
11 };
12 void reversed_order::num(int newN)
13 {
14 temp=newN;
15 //将数字的每一位由低位到高位存入数组 注意数组是从低位到高位存入数组的
16 for(int i=0;temp!=0;i++)
17 {
18 array_Num[i]=temp%10;
19 temp=temp/10;
20 numb=i;//记录数组的终止地址 局部变量i省内存
21 }
22 //数组中存储的数字是从地位到高位存入数组的
23 for(int i=0;i<numb/2+1;i++)
24 {
25 temp=array_Num[numb-i];
26 array_Num[numb-i]=array_Num[i];
27 array_Num[i]=temp;
28 }
29 //计算逆序数
30 result=0;
31 for(int i=1;i<=numb;i++)
32 {
33 for(int j=0;j<i;j++)
34 {
35 if(array_Num[i]<array_Num[j])
36 {
37 result++;
38 }
39 }
40 }
41 cout<<result;
42 }
43 int main()
44 {
45 int N;
46 cout<<”请输入要求逆序数的序列”<<endl;
47 cout<<”请输入0-9数字 保证没有数字重复 否则出错!”<<endl;
48 cin>>N;
49 reversed_order reAb;
50 reAb.num(N);
51 system(“pause”);
52 return 0;
53 }