如何实现寻找一维数组中第二大数,要求是时间复杂度为O(n)。
具体实现代码如下:
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
int find_2nd_max(int *arr,int n)
{
int max=arr[0]; //定义最大数
int s_max=arr[1]; //定义次大数
if(max<s_max){
max=arr[1];
s_max=arr[0];
}else{
max=arr[0];
s_max=arr[1];
}
for(int i=2;i<n;i++){
if(max<arr[i])
{
s_max=max;
max=arr[i];
}else if(s_max<arr[i])
{
s_max=arr[i];
}
}
return s_max;
}
void main()
{
int a[]={1,4,6,8,9,12,10};
cout<<find_2nd_max(a,7)<<endl;
}