二维数组的排序
来源:互联网 发布:04年雅典吉诺比利数据 编辑:程序博客网 时间:2024/04/30 02:59
- import java.util.Arrays;
- public class T {
- public static void main(String[] args) {
- int[][] a = { { 9, 5, 8, 6 }, { 7, 5, 8, 1 }, { 3, 9, 2, 5 },
- { 4, 6, 9, 2 } };
- int[] str = new int[4];
- for (int j = 0; j < 4; j++) {
- for (int i = 0; i < 4; i++) {
- str[i] = a[j][i];
- }
- Arrays.sort(str);
- for (int i = 0; i < 4; i++) {
- a[j][i] = str[i];
- }
- }
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- System.out.print(a[i][j] + ", ");
- }
- System.out.print("/n");
- }
- }
- }//
代码有个致命的缺陷,只是每一维数组排序,下面贴正确的代码
- public class T2 {
- public static void main(String[] args) {
- int[][] a = { { 9, 5, 8, 6 }, { 7, 5, 8, 1 }, { 3, 9, 2, 5 },
- { 4, 6, 9, 2 } };
- int str = 0;
- for (int b = 0; b < 19; b++) {
- for (int j = 0; j < 4; j++) {
- for (int i = 0; i < 4; i++) {
- if (i == 3 && j < 3) {
- if (a[j][i] > a[j + 1][0]) {
- str = a[j][i];
- a[j][i] = a[j + 1][0];
- a[j + 1][0] = str;
- }
- } else if (i < 3) {
- if (a[j][i] > a[j][i + 1]) {
- str = a[j][i];
- a[j][i] = a[j][i + 1];
- a[j][i + 1] = str;
- }
- }
- }
- }
- }
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- System.out.print(a[i][j] + ", ");
- }
- System.out.print("/n");
- }
- }
- }