查詢陣列中第二大的數字

2021-07-04 22:05:19 字數 787 閱讀 3512

#define arrsize             10

#define minnumber 0xffffffff

#define find_sucess 1

#define find_fail 0

int getsecondmaxnumber(int buffer,int *secondmax)

else if (buffer[i] > *secondmax && buffer[i] < max)

*secondmax = buffer[i];

}if(*secondmax == minnumber) //the numbers are all the same.

return find_fail;

return find_sucess;

}

查詢第二大數實際上是伴隨在查詢最大數的過程中的。 1、

如果當前元素大於最大數 max,則讓第二大數等於原來的最大數 max,再把當前元素的值賦給 max。

2、

如果當前的元素大於第二大數secondmax的值而小於最大數max的值,則要把當前元素的值賦給 secondmax。――判斷條件不能僅僅只是大於第二大的數secondmax,否則我們便無法處理」 99,99,88,86,68,66 」這種情況。

ps:這個函式在呼叫時需要判斷函式的返回值是否是find_sucess才能使用。

找出陣列中第二大的數

給你乙個陣列,求出其中第二大的數 比如陣列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...