#include<iostream>
using namespace std;
//**二维数组排序改错,程序中存在非语法错误导致排序不成功,请修改
#define M 2
#define N 2
class Agx
{
private:
int a[M][N];
int sort;//1代表利用选择排序升序 其他数字代表利用冒泡排序降序
public:
void setAgx()
{
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
cin>>a[i][j];
}
void sortAgx(int check=0)
{
sort = check;
if(sort == 1)
sortUp(a[0]);
else
sortDown(a[0]);
}
void sortUp(int *p) //实际上可以把这个当做一维数组来想,*P传进去的就是指针 其实就是一串连续的地址,其实就是一维数组
{
int i,j,temp;
for(i=0;i<M*N-1;i++)
for(j=i;j<M*N-1;j++) //j=i 就是选择排序(J等于变量就是选择排序
{
if(p[i]>p[j+1])
{
temp = p[i];
p[i] = p[j+1];
p[j+1] = temp;
}
}
}
void sortDown(int *p)
{
int i,j,temp;
for(i=0;i<M*N-1;i++)
{
for(j=0;j<M*N-1-i;j++) //j=0就是冒泡排序
{
if(p[j]<p[j+1])
{
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
}
void showAgx()
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
};
int main()
{
Agx test;
test.setAgx();
test.sortAgx(1);
test.showAgx();
cout<<endl;
test.sortAgx(0);
test.showAgx();
}