第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何找到多維數(shù)組中最大的10個(gè)元素?

如何找到多維數(shù)組中最大的10個(gè)元素?

明月笑刀無(wú)情 2023-09-27 10:12:27
我希望這會(huì)打印一個(gè)最大的值。但它需要 3D 數(shù)組中 10 個(gè)最大的元素。public class foo{    Public static void main(String[] args){        int row,col,dep=3;        int[][][] value=new int[row][col][dep];        /* insert the value from user or initialize the matrix*/        int max=0;        for(row=0;row<3;row++)            for(col=0;col<3;col++)                for(dep=0;dep<3;dep++)                    if(value[row][col][dep]>max)                        max=value[row][col][dep];        System.out.println(max);    }}
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以將所有整數(shù)添加到 a 中List<Integer>,對(duì)其進(jìn)行排序,然后獲取它的 X 最大個(gè)數(shù):


public class foo {

    public static void main(String[] args) {


        int row = 3, col = 3, dep = 3;

        int[][][] value = new int[row][col][dep];

        value[1][2][1] = 10;

        value[1][0][1] = 15;


        List<Integer> listWithAll = new ArrayList<>();

        /* insert the value from user or initialize the matrix*/

        int max = 0;

        for (row = 0; row < 3; row++)

            for (col = 0; col < 3; col++)

                for (dep = 0; dep < 3; dep++)

                    listWithAll.add(value[row][col][dep]);


        listWithAll.sort(Collections.reverseOrder());

        for (int i = 0; i < 10; i++) {

            System.out.println(listWithAll.get(i));

        }

    }

}

打?。?/p>


15 10 0 0 0 0 0 0 0 0


或僅使用 Java 8 流:


List<Integer> max10 = listWithAll.stream()

        .sorted(Collections.reverseOrder())

        .limit(10)

        .collect(Collectors.toList());


max10.forEach(System.out::println);


查看完整回答
反對(duì) 回復(fù) 2023-09-27
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

這是一種使用 來(lái)做到這一點(diǎn)的方法streams。我使用了完整的 2 x 2 x 2 數(shù)組以使其更容易,但它適用于任何int[][][]數(shù)組。我沒(méi)有使用嵌套循環(huán),而是只使用flatMapped數(shù)組。


初始化數(shù)組。


      int[][][] v = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};

現(xiàn)在獲取前 4 個(gè)值(或前 N 個(gè)值)并將它們放入列表中。


      int top4 = 4;

      List<Integer> top4Max =

            Arrays.stream(v).flatMap(Arrays::stream).flatMapToInt(

                  Arrays::stream).boxed().sorted(

                        Comparator.reverseOrder()).limit(top4).collect(

                              Collectors.toList());


      System.out.println(top4Max);


印刷


8 7 6 5


剝離Arrays.stream一層數(shù)組。將 flatMap它們進(jìn)一步扁平化為數(shù)組single dimenion。將flatMapToInt其扁平化,將stream of ints其分類并加工成有限的集合。


如果需要,您還可以將它們放入數(shù)組而不是列表中。


查看完整回答
反對(duì) 回復(fù) 2023-09-27
?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

或者,可以創(chuàng)建一個(gè)小數(shù)組并將其與普通的 findmax 函數(shù)一起使用。


public class Array_3D {

    public static void main(String[] args) {

        int row = 3, col = 3, dep = 3;

        int[][][] value = new int[row][col][dep];

        value[1][2][1] = 10;

        value[1][0][1] = 15;


        int[] topten = new int[10];  //array to hold max values

        int count = 0;

        int candidate = 0;

        for (int i = 0; i < row; i++) {

            for (int j = 0; j < col; j++) {

                for (int k = 0; k < dep; k++) {   

                    if (count < 10) {                 //start with first ten values

                        topten[count] = value[i][j][k];

                        count++;

                    }

                    else {

                        candidate = value[i][j][k];

                        for (int x = 0; x < 10; x++) {   //loop for loading top values

                            if (candidate > topten[x]) {

                                topten[x] = candidate;

                                break;                   //exit on first hit

                            }

                        }

                    }

                }

            }

        }

        for (int i = 0; i < 10; i++) {

            System.out.print(topten[i] + " ");

        }

        System.out.println();

    }

}

我不知道對(duì)于大型 3D 數(shù)組哪種方法更快;這里我們必須在 3D 數(shù)組中的每個(gè)點(diǎn)運(yùn)行一個(gè)小循環(huán),而不是創(chuàng)建一個(gè)全新的列表并對(duì)其進(jìn)行排序。顯然,這在內(nèi)存使用方面獲勝,但不確定速度。[編輯注意,這將按原樣返回前十個(gè)值的未排序數(shù)組]。


查看完整回答
反對(duì) 回復(fù) 2023-09-27
  • 3 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)