#coding=gbk
#[微软面试题]写一个函数求一个整数数组中第二大元素。
def find_sec_max( A ):
N = len( A)
if N<=0:
return 0
M1 = A[0]
M2 = M1
for i in range(1,N):
# A[i] 如果比最大的还大
if A[i]>M1:
M2 = M1 #原最大的当二大
M1 = A[i] #产生新的老大
# 否则 若比老大小,比原老二大,则产生新的老二
elif A[i]>M2 and A[i]< M1:
M2 = A[i]
return M2
from random import randint
A = [ randint(-100,100) for x in range(0,10) ]
print ("原数组=",A )
print ("第二大的元素是:", find_sec_max( A ))
B = [-46, 38, 78, -25, -75, 55, -27, -44, 78, -56]
print ("原数组=",B )
print ("第二大的元素是:", find_sec_max( B ))
--- 结果 ---
原数组= [-97, -9, 55, 72, -3, 96, -76, -57, -39, -19]
第二大的元素是: 72
原数组= [-46, 38, 78, -25, -75, 55, -27, -44, 78, -56]
第二大的元素是: 55
说明:
有意按排 B 数组,是看一下,原数组中有两个并列老大时,如何求老二。
#include
#define MaxSize 1000
using namespace std;
typedef struct MyTwoMax
{
}MyMax;
int max(int a,int b)//求两数中的大者
{
}
int min(int a,int b)//求两数中的小者
{
}
MyMax getSecMax(int MyInt[],int low,int high)//分治求数值中最大的两个元素
{
}
void main()
{
}