題目:給出乙個陣列,要求輸出陣列中第二個大的數
輸入:int a=;
輸出:34
題解思路:
方法一:遍歷
1.定義最大值max初始化為a[0],第二大值為sec,遍歷陣列,如果陣列元素比max大就更新,max=a[i],sec記錄上一次max的值;如果陣列元素不大於max,再將陣列元素和sec判斷,如果陣列元素a[i]大於sec,則更新sec,sec=a[i];
函式**:
#include
using
namespace std;
//尋找第二大的數 採用記錄兩個數的辦法
intsecondbig
(int data,
int n)
else}}
return sec;
}int
main()
; cout<<
secondbig
(a,8
)
}
方法二:原始遍歷
遍歷兩遍,第一遍遍歷的時候找到最大值,然後在第二遍的時候,在排除最大值的情況下找到最大值,這個第二遍遍歷的最大值就是第二大的值。
乙個比較簡單的想法是遍歷兩邊陣列,第一遍找出最大值。
函式**二:
#include
#include
#include
using
namespace std;
//尋找第二大的數 採用記錄兩個數的辦法
intsecondbig
(int data,
int n)
else
//遍歷所有數字
for(
int i=
2;i)else
if(data[i]
>second)second=data[i];}
return second;
}int
main()
; cout<<
secondbig
(a,7
)
}
方法三:堆排序,優先順序佇列adt 檔案系統中的第二個問題
在用大的buff讀取檔案的過程中,發現讀取無法正常結束,fileinfo的內容被破壞掉了.追查了半天,發現是filegetch函式中的一處小bug.在550行,handle findopenfilew fp drive,fp dirclus,fp name if handle這裡,如果該檔案沒有被 ...
java 取int型的第二個位元組的數
無意中看到某個題目,前提條件,乙個byte最多表示256位,因為其是由8個位表示 八個1 最多表示256位。乙個int由32位組成,所以是4個byte表示。題目要求是給定乙個int數字,問第二個byte是多少。剛開始不會寫。再後來複習nio時,突然想到這題。1.首先建立 bytebuffer,其內部...
關於正規表示式中replace的第二個引數
string.replace searchvalue,newvalue searchvalue 必須。規定子字串或要替換的模式的 regexp 物件。請注意,如果該值是乙個字串,則將它作為要檢索的直接量文字模式,而不是首先被轉換為 regexp 物件。newvalue 必需。乙個字串值。規定了替換文...