簡體   English   中英

對負整數數組進行排序,並找到一對較大的整數(與符號無關)

[英]Sort array of negative integers and find pair of Larger integer irrespective of sign

我有一個整數數組,如下面的代碼所示。 我必須在數組中找到一對最大的數字。 但是有一個小轉折。

請參見下面的代碼和輸出。

public class ArraySort {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    int[] a = { -9, -2, -10, -1, -4 };
    int[] b = null;
    int n = a.length;
    int temp = 0;
    int k = 0;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a[i] > a[j]) {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    System.out.println("Ascending Order:");
    for (int i = 0; i < n; i++) {
        System.out.print(a[i] + ",");
    }

    System.out.println("\nPair of larger numbers");

    for (int i = 0; i < n; i++) {
        if (k < 2) {
            if (a[i] > a[n - 1 - i]) {
                System.out.println(a[i]);

            } else {
                System.out.println(a[n-1-i]);
            }
        }
        k++;
    }
  }

}

其輸出顯示為

Ascending Order:

-10,-9,-4,-2,-1,一對大數-1 -2

但是,不是顯示最大的數字為-1,-2。 我必須顯示-10和-9。 即使數組包含負值,比較也應沒有負號。

如果您所有的整數都是負數,為什么不只顯示最小的兩個整數?

只需添加以下內容:

for(int i = 0; i < a.length; i++){
   a[i] = Math.abs(a[i]);
}

這會將數字轉換為正數。 或者,您可以遵循JF所說的。 但是,如果其中一些是積極的,那么這種方法將行不通。

為了使任務有意義(“困難”),數組可能應同時包含負數和正數。

絕對最大數字的候選項位於數組的開頭或結尾:

-13a, -7, -3, -2, -1, 9, 10b
-10b, -7, -3, -2, -1, 9, 13a
-13a, -11b, -3, -2, -1, 9, 10
-8, -7, -3, -2, -1, 9b, 13a

因此,您可能會在一個循環中得到兩個索引,一個從頭開始,一個從頭開始。 無重疊(-2、4)。

由於這是家庭作業,祝您好運。

暫無
暫無

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

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