openjudge数组练习题
倒置排序
#include<iostream>
using namespace std;
int main()
{
//声明一个变量表示后面列出的组数
int n;
//输入组数
cin >> n;
//声明一个变量表示每组数后有a个数
int a;
//声明一个变量表示每组数中的单个数据
int num;
//声明一个变量表示反转后的数字
int opposite;
//声明两个临时变量
int temp1,temp2;
//最外层循环控制循环n组数
for(int i=0; i<n; i++)
{
//输入每组数的数量
cin >> a;
//声明一个有a个数据的数字nums
int nums[a];
//声明一个有a个数据的数组ins
int ins[a];
//循环输入每个数据的数值
for(int j=0; j<a; j++)
{
//输入每个数据
cin >> num;
//将数据赋值给数组nums
nums[j]=num;
//定义反转数字的初始值为0
opposite=0;
//通过循环将每个数据反转
while(num!=0)
{
opposite=opposite*10+num%10;
num/=10;
}
//将反转后的数值赋值给数组ins
ins[j]=opposite;
}
//通过循环将数组中的数据按照升序排列
//采用选择排序法进行排列
//外层循环控制比较轮数
for(int x=0; x<a; x++)
{
//内层循环控制数据比较
for(int y=x+1; y<a; y++)
{
//比较相邻两数据
//判断前一个数是否大于后一个数
if(ins[x]>ins[y])
{
//将反转数字的数组ins排序
swap(ins[x],ins[y]);
//按相同排列方法排列初始数据数组nums
swap(nums[x],nums[y]);
}
}
}
//循环输出数组nums
for(int d=0; d<a; d++)
{
cout << nums[d]<< " ";
}
cout << endl;
}
return 0;
}