二维数组中元素排序——彻底排序

来源:互联网 发布:软件系统试运行方案 编辑:程序博客网 时间:2024/06/05 17:23
/* (程序头部注释开始) </p><p>* 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生                              * 作    者:   李兆庆                         * 完成日期:   2012      年   9    月    18   日 * 输入描述:   * 问题描述及输出:  编写一个Java应用程序,自己考虑到既然要排序和排彻底点啊点啊,所以就得这样排出后数组中的元素更加有层次感。欢迎也希望大家给出宝贵的建议!* 实现功能:将二维数组中元素由大到小依次排序并输出1 4 5 67 2 10 119 8 12 3,对调后结果:12 11 10 98 7 6 54 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++;}            }    }    }