Java学习----二维数组排序

课堂代码实验

问题:

(对二维数组排序)编写一个方法,使用下面方法对二维数组排序:

public static void sort(int m[ ][ ])

这个方法实现先按行排列后在按列排序。

例如:

初始数组{{4,2},{1,7},{4,5},{1,2},{1,1},{4,1}}。

排序后为{{1,1},{1,2},{1,7},{4,1},{4,2},{4,5}}。

 基本思路:

        先排行,后排列。排序的思路相同。将一维数组理解成二维数组。做的时候顺便画图理解更好。

代码如下:

package java_class;

import java.util.Scanner;

public class Sort_my_Array {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        System.out.println("请输入二维数组的横坐标和纵坐标:");
        int [][] my_array = new int[scn.nextInt()][scn.nextInt()];

        System.out.println("请输入你的数组:");
        for(int i = 0;i < my_array.length;i++ ){
            for(int j = 0;j < my_array[i].length;j++){
                my_array[i][j] = scn.nextInt();
            }
        }

        System.out.println("排序前数组如下:");
        print_array(my_array);
        cmp(my_array);             //将数组的第一位先排下序
        sort(my_array);
        System.out.println("排序后数组如下:");
        print_array(my_array);

    }

    public static void cmp(int m[][]){
        for(int i = 0;i < m.length;i++){
            for (int j = i+1;j < m.length;j++) {
                if (m[i][0] > m[j][0]) {
                    int[] temp = m[j];
                    m[j] = m[i];
                    m[i] = temp;
                }
            }
        }
    }

    public static void sort(int[][] m){
        for (int i =0;i < m.length;i++){
            int k =1;
            for (int j = i+1;j < m.length;j++){
                if(m[j][0] > m[i][0])
                    break;
                if (m[i][k] == m[j][k]){
                    do {
                        k++;
                    }while(m[i][k] != m[j][k]);
                    if (m[i][k] > m[j][k]){
                        int[] temp = m[j];
                        m[j] = m[i];
                        m[i] = temp;
                    }
                }
                if (m[i][k] > m[j][k]){
                    int[] coc = m[j];
                    m[j] = m[i];
                    m[i] = coc;
                }
            }
        }
    }

    public static void print_array(int m[][]){
        for(int i = 0;i < m.length;i++ ){
            for(int j = 0;j < m[i].length;j++){
                System.out.print(m[i][j] + " ");
            }
            System.out.println();
        }
    }
}

 运行结果实例:

 


版权声明:本文为qq_73563764原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。