先来理一下思路,对二维数组的排序和对一维数组排序有什么区别,【坏笑】当然是多了一维呀。哈哈哈哈哈
思路很简单:将二维的转为一维的来做;
先看一个简单的一维数组
例如:
一维数组一个for循环搞定。
#include<iostream>
#include<cstdlib>
using namespace std;
const int N = 4;
int main()
{
int a[N];
int i, j, y = 1;
for (i = 0; i < N; i++)
{
a[i] = rand() % 10;
}//generate random nums
for (i = 0; i < N; i++)
{
cout << a[i] << " ";
}//output original array
cout << endl;
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (a[i]>a[j])
swap(a[i], a[j]);
}//transfer array
for (i = 0; i < N; i++)
{
cout << a[i] << " ";
}//output original array
cout << endl;
return 0;
}
}
这是一维的数组的转换
接下来是对二维数组的转换,运用一维的转换思维;
例二:
#include<iostream>
#include<cstdlib>
using namespace std;
const int N = 4;
int main()
{
int a[N][N];
int i, j, y = 1;
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
a[i][j] = rand() % 10;
}
}//generate random nums
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
cout << a[i][j] << " ";
cout << endl;
}//original
cout << "****************************\n";
int k;
for (i = 0; i < N; i++)
{
for (k = 0; k<N / 2; k++)
{
for (j = N - 1; j >k; j--)
{
if (a[i][k] > a[i][j])
swap(a[i][k], a[i][j]);
cout << a[i][k] << "-->" << a[i][j] << endl;//show the process
}
}
cout << "___________\n";
}//transfering
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
cout << a[i][j] << " ";
cout << endl;
}//after
return 0;
}
希望能帮到大家,不足的地方请指正。
码字不易,点个赞呗。