import java.util.Random;
import java.util.Scanner;
/**
* 数组内容排序
* 拓展:每一行单独排序
*/
public class ArraySort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random r = new Random();
System.out.println("输入二维数组的行数:");
int a = sc.nextInt();
System.out.println("输入二维数组的列数:");
int b = sc.nextInt();
if (a < 0 || b < 0) {
System.out.println("请正确输入数据(正整数)");
return;
}
int arr[][] = new int[a][b];
int arr2[][] = new int[a][b];
int arr1[] = new int[a * b];
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++)
arr[i][j] = r.nextInt(100);
System.out.println("随机数组创建成功(数值范围:0-100):");
//打印输出未排序结果
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++)
System.out.print(arr[i][j] + "\t");
System.out.println();
}
//排序
int aa = 0;
//将二维数组转换为一维数组
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++) {
arr1[aa] = arr[i][j];
aa++;
}
//一维数组冒泡排序
for (int i = 0; i < arr1.length; i++)
for (int j = 0; j < arr1.length - 1; j++)
if (arr1[j] > arr1[j + 1]) {
int num = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = num;
}
int m = 0, n = 0;
//转换回二维数组
for (int i = 0; i < arr1.length; i++) {
arr2[m][n] = arr1[i];
n++;
if (n == b) {
n = 0;
m++;
}
}
//打印输出结果
System.out.println("排序后的数组为:");
for (int ii = 0; ii < a; ii++) {
for (int jj = 0; jj < b; jj++)
System.out.print(arr2[ii][jj] + "\t");
System.out.println();
}
}
}