没有排序方法对多维数组进行排序?

时间:2016-02-22 01:51:42

标签: java arrays sorting multidimensional-array

我的任务是创建一个2D数组(10乘10),用随机数(从10到99)填充它,以及其他任务。但是,我很难在不使用数组sort()方法的情况下按升序对此数组的每一行进行排序。

我的排序方法没有排序。相反,它从最左上角到右下角对角打印出值。我应该怎么做才能对数字进行排序?

这是我的代码:

public class Program3 
{
    public static void main(String args[])
    {
        int[][] arrayOne = new int[10][10];
        int[][] arrayTwo = new int[10][10];
        arrayTwo = fillArray(arrayOne);

        System.out.println("");

        looper(arrayTwo);

        System.out.println("");

        sorter(arrayTwo);


    }
    public static int randomRange(int min, int max)
    {
        // Where (int)(Math.random() * ((upperbound - lowerbound) + 1) + lowerbound);
        return (int)(Math.random()* ((max - min) + 1) + min);
    }
    public static int[][] fillArray(int x[][])
    {
        for (int row = 0; row < x.length; row++)
        {
            for (int column = 0; column < x[row].length; column++)
            {
                x[row][column] = randomRange(10,99);
                System.out.print(x[row][column] + "\t");
            }
            System.out.println();
        }
        return x;
    }
    public static void looper(int y[][])
    {
        for (int row = 0; row < y.length; row++)
        {
            for (int column = 0; column < y[row].length; column++)
            {
                if (y[row][column]%2 == 0)
                {
                    y[row][column] = 2 * y[row][column];

                    if (y[row][column]%10 == 0)
                    {
                        y[row][column] = y[row][column]/10;

                    }
                }
                else if (y[row][column] == 59)
                {
                    y[row][column] = 99;
                }
                System.out.print(y[row][column] + "\t");
            }
            System.out.println();
        }
        //return y;
    }
    public static void sorter(int[][] z)
    {
        int temp = 0;
        int tempTwo = 0;
        int lowest; 
        int bravo = 0;
        int bravoBefore = -1;

        for (int alpha = 0; alpha < z.length; alpha++)
        {
            //System.out.println(alpha + "a");

            lowest = z[alpha][bravoBefore + 1];
            bravoBefore++;
            for (bravo = alpha + 1; bravo < z[alpha].length; bravo++)
            {
                //System.out.println(alpha + "b");
                temp = bravo;

                if((z[alpha][bravo]) < lowest)
                {

                    temp = bravo;
                    lowest = z[alpha][bravo];
                    //System.out.println(lowest + " " + temp);
                    //System.out.println(alpha + "c" + temp);
                    tempTwo = z[alpha][bravo];
                    z[alpha][bravo] = z[alpha][temp];
                    z[alpha][temp] = tempTwo;   
                    //System.out.println(alpha + "d" + temp);
                }

            }

            System.out.print(z[alpha][bravoBefore] + "\t");
        }
        /*
        for (int alpha = 0; alpha < z.length; alpha++)
        {
            for (int bravo = 0; bravo < z.length - 1; bravo++)
            {
                if(Integer.valueOf(z[alpha][bravo]) < Integer.valueOf(z[alpha - 1][bravo]))
                {
                    int[][] temp = z[alpha - 1][bravo];
                    z[alpha-1][bravo] = z[alpha][bravo];
                    z[alpha][bravo] = temp;
                }
            }
        }
         */
    }
}

2 个答案:

答案 0 :(得分:0)

// background audio *must* mix with other sessions (or setActive will fail)
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
                                 withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDuckOthers
                                       error:&sessionError];
if (sessionError) {
    NSLog(@"ERROR: setCategory %@", [sessionError localizedDescription]);
}

希望此代码有所帮助。快乐的编码

答案 1 :(得分:0)

让x是我们未排序的数组;

        int t1=0;
        int i1=0;
        int j1=0;
        int n=0;

        boolean f1=false;

        for(int i=0;i<x.length;i++){

            for(int j=0;j<x[i].length;j++){

                t1=x[i][j];



                for(int m=i;m<x.length;m++){


                    if(m==i)n=j+1;  

                    else n=0;   

                    for(;n<x[m].length;n++){

                        if(x[m][n]<=t1){

                            t1=x[m][n];
                            i1=m;
                            j1=n;
                            f1=true;
                        }                       

                    }


                }

                if(f1){ 
                    x[i1][j1]=x[i][j];
                    x[i][j]=t1;
                    f1=false;
                }
            }   


        }

//现在x已排序; “-”;