求陣列中的第二大的數 不改變陣列的順序

2021-08-01 19:29:45 字數 775 閱讀 9162

如果用氣泡排序對數值排序,那麼演算法的效率比較低。一開始我考慮的先求出陣列的最大值和陣列的最小值,然後再迴圈陣列,求出陣列的第二大的值,這個演算法的時間複雜度是o(n)。

private

static

void

secondarray();

int bb = aa[0];//最大值

int cc = aa[0];//最小值

for (int i = 0; i < aa.length; i++)

if(cc > aa[i])

}system.out.println(bb);

system.out.println(cc);

for (int i = 0; i < aa.length; i++)

}system.out.println(cc);

}

上面這個演算法的時間複雜度雖然是o(n),但是迴圈了兩次,現在考慮只迴圈一次來求陣列的第二大值。

private

static

void

secondarray1();

int bb = aa[0];//最大值

int cc = integer.min_value;//第二大值

for (int i = 0; i < aa.length; i++) else

if(cc < aa[i] && aa[i]< bb)

}system.out.println(cc);

}

找出陣列中第二大的數

給你乙個陣列,求出其中第二大的數 比如陣列a 1,2,3,4,5,6,7,8,9 其中第二大的數為8,返回8即可 分析 一般情況下都是求最大值,呵呵,這道題很有趣。想想也不難,可以在掃瞄最大值的同時,求出第二大的值,就是比當前最大值大的數賦給最大值,然後用第二大的值與先前的最大值比較,如果小,則用先...

找出陣列中第二大的數

include include includeusing namespace std 初始化最大值為a 0 次大值為a 1 遍歷一次,每次比較並更新最大值和次大值,最後就可以得到次大值。這種方法時間複雜度為o n bool invalidinput false int findsecondmax i...

找出陣列中第二大的數

題目 寫乙個函式找出乙個整數陣列中,第二大的數。cpp view plain copy print?include 初始化最大值為a 0 次大值為a 1 遍歷一次,每次比較並更新最大值和次大值,最後就可以得到次大值。intfindsecondmaxvalue int a,intsize else i...