解法一:使用常规的解法,时间复杂度为N,比较次数看似2N,但实际上大于max的就不必和min比较了,同理,小于min的就不必和max比较了,因此比较的次数不足2N次
#include<stdio.h>
int main(void)
{
int a[5]={3,2,6,8,1};
int min=a[0];
int max=a[0];
int i;
for(i=0;i<=4;i++)
{
if(min>a[i])
{
min=a[i];
}
else if(max<a[i])
{
max=a[i];
}
}
printf("max=%d,min=%d",max,min);
return 0;
}
还有一些递归的做法,比较次数是1.5N,但是实际上效率是比较低的,后续讲解
阅读全文