如何将以下代码冒泡到多维数组?

时间:2018-05-31 05:48:57

标签: java arrays sorting multidimensional-array

此代码包含使用数组进行冒泡排序。我需要使用多维数组。

public class list {
    public static void main(String[] args) {
        {
            int temp;
            int a[] = { 0, 7, 4, 5, 6, 2, -1, 3 };
            for (int i = 0; i < a.length; i++) {
                for (int j = i; j < a.length; j++) {
                    if (a[i] < a[j]) {
                        temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }

                }
                System.out.print(a[i] + ",");
            }

        }
    }
}


output:7,6,5,4,3,2,0,-1,

2 个答案:

答案 0 :(得分:0)

试试这个:如果你想在java中对2D数组进行排序,那么你可以查看这个例子。

class Sort2D
        {
            public static void main(String args[])throws IOException
            {
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

                System.out.print("Enter the no. of  rows: "); //inputting number of rows
                int m=Integer.parseInt(br.readLine());
                System.out.print("Enter the no. of columns: "); //inputting number of columns
                int n=Integer.parseInt(br.readLine());

                int A[][]=new int[m][n]; //creating a 2D array

                /* Inputting the 2D Array */

                for(int i=0;i<m;i++)
                {
                    for(int j=0;j<n;j++)
                    {
                        System.out.print("Enter the elements: ");
                        A[i][j]=Integer.parseInt(br.readLine());
                    }
                }        

                /* Printing the original 2D Array */

                System.out.println("The original array:");
                for(int i=0;i<m;i++)
                {
                    for(int j=0;j<n;j++)
                    {
                        System.out.print(A[i][j]+"\t");
                    }
                    System.out.println();
                }

                /* Sorting the 2D Array */

                int t=0;
                for(int x=0;x<m;x++)
                {
                    for(int y=0;y<n;y++)
                    {
                        for(int i=0;i<m;i++)
                        {
                            for(int j=0;j<n;j++)
                            {
                                if(A[i][j]>A[x][y])
                                {
                                    t=A[x][y];
                                    A[x][y]=A[i][j];
                                    A[i][j]=t;
                                }
                            }
                        }
                    }
                }

                /* Printing the sorted 2D Array */

                System.out.println("The Sorted Array:");
                for(int i=0;i<m;i++)
                {
                    for(int j=0;j<n;j++)
                    {
                        System.out.print(A[i][j]+"\t");
                    }
                    System.out.println();
                }
            }
        }

答案 1 :(得分:0)

您必须一次对一个维度进行排序,多个维度需要多次运行。因此,创建另一个方法并一次将一个维度传递给sort方法。它还取决于商业案例。在任何情况下,bubblesort都不能比O(n2)做得更好,事实上,对于m n 2-d数组,它是m O(n2)。

另一种策略可能是,将数组从多个维度展平为单个维度,然后对一个维度进行排序。