寻找数组中第二大数
/* * 写一个函数找出一个整数数组中,第二大的数(microsoft) * 要求效率尽可能高 */#include<stdio.h>#include<stdlib.h>int find(int *a,int n){int i=1;int second=*(a+i);while(i<n){if(*(a+i)>second)second=*(a+i);i++;}return second;}int findsecondmaxvalue(int *a,int n){int i=0;int first=*(a+i);int second=*(a+i);while(i<n){if(*(a+i)>first){second=first;first=*(a+i);}else if(*(a+i)==first){//do nothing}else if(*(a+i)<first&&*(a+i)>second){second=*(a+i);}else{//do nothing}i++;}//最大值和次大值相等(只可能出现在数组的第一个元素)if(first==second){second=find(a,n);}return second;}int main(){int a[]={9,5,1,7,4,6,2,3,8};int n=sizeof(a)/sizeof(a[0]);int second=findsecondmaxvalue(a,n);printf("次大值=%d\n",second);}
?
1 楼 hubeen 2011-02-25 思路一: