黑马程序员技术交流社区

标题: 【新手提问】请教各位大神!关于二维数组的排序问题 [打印本页]

作者: 天气预报    时间: 2015-8-22 22:52
标题: 【新手提问】请教各位大神!关于二维数组的排序问题
刚学习了数组的排序,一维数组排序基本学会,想试试二维数组的排序~~
但是试了很久只停留在 数组“行”的排序上,对于“列”的综合排序编不出来。。。
求大神指教如何编写二维数组的排序~~小弟在此谢过


本人不才,源程序如下:
class PaiXu
{
        public static void main(String[] args)
        {
                int [][]arr=new int[3][];                                                       //定义数组元素
                arr[0]=new int[] {81,72,92};       
                arr[1]=new int[] {21,2,27};
                arr[2]=new int[] {91,3,35};
                System.out.println("before:");
                printarr(arr);                                                                        //打印排序前数组
                bubble(arr);                                                                        //数组排序
                System.out.println("after:");
                printarr(arr);                                                                        //打印排序后数组
        }
       
        public static void printarr(int [][]arr)        {                                //打印数组
                for (int i=0;i<arr.length ;i++ )                {                                //设置循环语句遍历数组元素
                        for (int j=0;j<arr.length ;j++ )        {
                                System.out.println("arr["+i+"]["+j+"]="+arr[j]);          //打印数组对应元素
                        }
                }
                System.out.println();                                                                        //结果之间空出一行
        }
       
        public static void bubble(int [][]arr)        {                        //数组排序
                for (int i=0;i<arr.length;i++)        {                                //定义外层循环
                                for (int j=0;j<arr.length-1 ;j++)        {        //定义内层循环
                                if(arr[j]>arr[j+1])                        {        //数组相邻元素比较
                                change(arr);                                                //交换元素,使较大的元素位于arr[j+1]
                                               
                                }
                        /*if(arr[j]>arr[i+1][j])                        {                        //数组相邻元素比较
                                int temp=arr[j];                                                //交换元素,使较大的元素位于arr[j+1]
                                arr[j]=arr[i+1][j];
                                arr[i+1][j]=temp;
                                }  注:此部分原打算在行排序完成后再进行列排序,后来发现定义域不同,可忽略*/
                        }
                }
        }


        public static void change(int [][]arr)        {
                int a,b;
                int [][]arr=new int [a];
                        if (arr[a]>arr[a][b+1])                {
                                int c=arr[a];
                                arr[a]=arr[a][b+1];
                                arr[a][b+1]=c;
                        }
                printarr(arr);
        }
}



作者: xiekeshu    时间: 2015-8-22 23:17
你是想要每个一维数组排序 还是全部一维数组中的全部元素重新排序呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2