該賦值是創建一個方法,該方法可在int數組中找到第二大甚至int。我受限於使用任何庫中的任何方法。查找數組中第二大甚至int的有效方法
這裏是我的代碼對所有情況都適用:
public static int getSecondLargestEven(int[] ary) {
int i;
aryLength = ary.length;
int largestEven = -1;
int secondLargestEven = -1;
for (i = 0; i < aryLength; i++) {
if (ary[i] % 2 == 0) {
if (ary[i] > largestEven) {
if (largestEven != -1)
secondLargestEven = largestEven;
largestEven = ary[i];
} else {
if (ary[i] != largestEven) {
if (secondLargestEven == -1 || ary[i] >= secondLargestEven) {
secondLargestEven = ary[i];
}
}
}
}
}
此前調用methodI要求陣列有一個甚至超過其他任何方法調用。 所以,當secondLargestEven == -1時,我知道有一個重複。
是否有更高效的(少使用操作符,使用更少的循環,更少的內存分配)來實現目標?我如何改進我的代碼的邏輯?我怎樣才能提高我的整體代碼? 我不喜歡我必須分配幻數-1到secondLargestEven和最大的,因爲它們在技術上命名爲持有EVENS。使用循環將數組中的有效偶數分配給secondLargestEven和largestEven,然後繼續進行搜索是否高效?提前致謝。
對於想要改進的工作代碼(運行時,資源或一般風格/體系結構),最好在[CodeReview.SE](http://codereview.stackexchange.com/)上提供。 – Ordous 2014-09-26 17:09:22
您的代碼就性能而言,即使它不好,它似乎也很有效率。代碼優雅和最佳效率常常不兼容 – Joel 2014-09-26 17:10:02
@Joel我認爲漸近效率在大多數情況下與優雅非常兼容。現在使用少於1個字節的東西可能會產生難看的代碼。 – Ordous 2014-09-26 17:12:20