📄 逆序法.cpp
字号:
//逆序法排序
#include<iostream>
using namespace std;
#include <new>
int main()
{
int counter;
cout<<"请先输入你所要排列的总的元素数目,即(1,2…n)中n = :";
cin>>counter;
int *array1=new int[counter+1];//create array1 according to 'counter'.
int *array2=new int[counter+1];//create array2 according to 'counter'.
cout<<"请输入从 1 至 n 各元素的逆序数:";
for(int m = 1; m <= counter; m++)
{
cin>>array1[m];//initialize
}
for(int n = 1; n <= counter; n++)
array2[n] = 0;//initialize
cout<<"排列过程:"<<endl;
int flag = 0;
for(int i = 1;i <= counter; i++)
{
int counter1 = 0;
for(int j = 1; j <= counter; j++)
{
if(array2[j] == 0)//the place is available if it has the value of 0, else it has been used,then we need to slip.
{
counter1++;
}
if(counter1 == array1[i] && array1[i] != 0)
{
j++;
flag = j;
break;
}
else
if(array1[i] == 0)
{
flag = 1;
}
}
for(int counter2 = flag; counter2 <= counter; counter2++)
{
if(array2[counter2] == 0)//if it hasn't been used.
{
array2[counter2] = i;
break;
}
}
for(int p = 1; p <= counter; p++)
cout<<array2[p]<<' ';
cout<<endl;
}//end for
cout<<"最终得到排列:"<<endl;
for(int k = 1; k <= counter; k++)
cout<<array2[k]<<' ';
cout<<endl;
return 0;
}//end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -