簡體   English   中英

交換兩個數組的值,制作另一個不重復的數組並從高到低排序

[英]Exchange values of two arrays, make another array without repeats and sort from highest to lowest

我知道我必須用一段時間來做它或做 while 循環,但我無法讓它工作。 我也嘗試過 for 循環,但它總是給我一個錯誤,因為我不知道向量的確切長度,因為它們是隨機的。

int a = (int)(Math.random() * 3 + 1);
int b = (int)(Math.random() * 3 + 1);
int c = a + b;
int[] arrA = new int[a];
int[] arrB = new int[b];
int[] arrC = new int[c];
for (int i = 0; i < a; i ++) {
    arrA[i] = (int)(Math.random() * 10 + 1);
    for (int j = 0; j < b; j ++) {
        arrB[j] = (int)(Math.random() * 10 + 1);
    }
}

Arrays.sort(arrA);
Arrays.sort(arrB);
System.out.println(Arrays.toString(arrA));
System.out.println(Arrays.toString(arrB));
System.out.println(Arrays.toString(arrC));

從數組arrAarrB獲取值,並插入到arrC

int index = arrA.length;
for (int i = 0; i < arrA.length; i++) {
    arrC[i] = arrA[i];
}
for (int i = 0; i < arrB.length; i++) {
    arrC[i + index] = arrB[i];    
}

排序arrC

Arrays.sort(arrC);

顛倒順序並存入arrD

for(int l = 0; l < arrC.length; l++) {
    arrD[l] = arrC[arrC.length - (l+1)];
}

刪除重復項(簡化)

Set<Integer> remove=new LinkedHashSet<Integer>();
for(int i = 0;i < arrD.length;i++){
    remove.add(arrD[i]);
}

刪除重復項(通常)

int index2 = 0;
for (int i = 0; i < arrD.length; i++) {
    for (int k = 0; k < arrD.length; k++) {
        if (arrD[i] != arrD[k]) {
            arrE[index2] = arrD[i];
            index2++;
        }
    }
}

暫無
暫無

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

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