題目:寫乙個函式找出乙個整數陣列中,第二大的數。
演算法分析:
1)假設陣列中的前兩個元素就是最大和第二大,即max和smax;
2)從陣列的第二個元素開始遍歷陣列,當有元素大於max的時候,將max賦值給smax,再將最大的那個元素賦值給max;
3)如果當前元素小於max,並且大於smax,那麼就讓smax當前元素。
演算法實現:
方法一:
#include
#include
#define n 10
int main()
if(s[0]>s[1])
else
int i=0;
for(i=2;i<10;i++)
else
}return smax;
}
方法二:
#include#includeint findsmax(int
*a,int
size)
else
if(a[i] < max && a[i] > smax) //更新次大值
}return smax;
}int main()
; printf("second value = %d\n",findsmax(a,sizeof(a)/sizeof(a[0])));
return
0;}
寫乙個函式找出乙個整數陣列中第二大的數
如果是面試遇到這種型別的題,一定要多考慮一下了,畢竟題目不難,如果直接用排序去解題的話,面試官估計會比較失望了。因為這種型別的題,解法有很多,那麼別人當然是希望得到最高效的解法了。試想如果有一萬個數,如果用排序解答,是不是就浪費了大量的資源去將那些並不重要的數進行了排序。include void f...
找出乙個整數陣列中,第二大的數
寫乙個函式找出乙個整數陣列中第二大的數 include include include define size 10 intarray 隨機產生乙個大小為size的整數陣列 void createarray int array 列印整數陣列 void printarray int array pri...
怎樣編寫乙個程式,把乙個有序整數陣列放到二叉樹中
分析 本題考察二叉搜尋樹的建樹方法,簡單的遞迴結構。關於樹的演算法設計一定要聯想到遞迴,因為樹本身就是遞迴的定義。而,學會把遞迴改稱非遞迴也是一種必要的技術。畢竟,遞迴會造成棧溢位,關於系統底層的程式中不到非不得以最好不要用。但是對某些數學問題,就一定要學會用遞迴去解決。include includ...