簡體   English   中英

在Java中對隨機生成的2維數組進行排序?

[英]Sorting a randomly generated 2 Dimensional Array in java?

我正在嘗試制作一個程序,該程序在整個數組中以升序打印出二維數組。 數組中的任何元素都不能在數組中的任何地方重復。 非常感謝您需要做的任何事情。

08 11 14 19 21 22 25
15 22 25 28 32 37 41
20 28 31 32 39 40 48
24 34 41 47 53 54 56
28 37 47 50 57 60 66
29 38 50 57 64 70 71
31 43 52 62 65 75 78

它與followint代碼分叉,但未排序:

public static int[][] getRandomSorted2DArray(int size)
{
    int bigger = (int)Math.pow(2, size) + 1;
    int[][] data = new int[bigger][bigger];
    for (int i = 0; i < data.length; i++)
    {
        for (int j = 0; j < data[0].length; j++)
        {
            data[i][j] = new java.util.Random().nextInt(90);
        }
    }        
    return data;
}

同樣,我需要該程序的幫助,但需要兩件事。
1.以升序對整個數組進行排序。
2.不要重復任何其他元素。

您可以通過將每個元素比最后一個元素大至少1個來生成排序數組:

跟蹤最后一個聲明的值,而不是一個完全隨機的數字,請在lastValue99 - valuesToGo之間選擇一個隨機數(這樣,下一個數字仍然有空間。也許這99 - valuesToGo

public static int[][] getRandomSorted2DArray(int size)
{
    int bigger = (int)Math.pow(2, size) + 1;
    int[][] data = new int[bigger][bigger];
    lastValue = 0;
    valuesToGo = data.length * data[0].length;
    for (int i = 0; i < data.length; i++) {
        for (int j = 0; j < data[0].length; j++) {
            data[i][j] = lastValue + 1 + new java.util.Random().nextInt(99 - 1 - lastValue - valuesToGo);
            lastValue = data[i][j];
        }
    }        
    return data;
}

這些值可能會在100左右分布一些,但我想您可以根據需要自己解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM