解法一:使用常规的解法,时间复杂度为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,但是实际上效率是比较低的,后续讲解