/* (程序头部注释开始) </p><p>* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* 作 者: 李兆庆
* 完成日期: 2012 年 9 月 18 日
* 输入描述:
* 问题描述及输出: 编写一个Java应用程序,自己考虑到既然要排序和排彻底点啊点啊,所以就得这样排出后数组中的元素更加有层次感。欢迎也希望大家给出宝贵的建议!
* 实现功能:将二维数组中元素由大到小依次排序并输出
1 4 5 6
7 2 10 11
9 8 12 3,
对调后结果:
12 11 10 9
8 7 6 5
4 3 2 1
* 程序头部的注释结束
*/
public class Num{
/**
* @param args
*/
public static void main(String[] args) {
int[][] a = { { 1, 4, 5, 6 }, { 7, 2, 10, 11 }, { 8, 9, 12, 3 } };
System.out.println("对调前输出数组为:");
printMatrix(a); //按二维方式输出数组
printNewMatrix(a); //对调后输出数组
System.out.println("对调后输出数组为:");
printMatrix(a); //按二维方式输出数组
}
//按二维方式输出数组
static void printMatrix(int[][] a){
for (int i = 0; i < a.length; i++){
for (int j = 0; j < a[i].length; j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
//对调后输出数组
static void printNewMatrix(int[][] a){
int [] c = new int [a.length * a[0].length];
int m = 0;
for (int i = 0; i < a.length; i++){
for (int j =0; j < a[i].length; j++){
c[m] = a[i][j];
m++;
}
}
int n = 0;
for (int i = 0; i < c.length; i++){
for (int j = 0 ; j<c.length - i - 1; j++){
if (c[j]<c[j+1]){
n = c[j];
c[j] = c[j+1];
c[j+1] = n;
}
}
}
System.out.println("数组中所有元素有大到小排序为: ");
for (int i = 0; i < c.length; i++){
System.out.print(c[i]+" ");
}
System.out.println();
int r = 0;
for (int i = 0; i < a.length; i++){
for (int j =0; j < a[i].length ; j++){
a[i][j] = c[r];
r++;
}
}
}
}