我能想到的是:扫描一遍,用max和min存储扫描过程中的最大值和最小值,数组中两个数据比较后,拿大的跟max比较,拿小的跟min比较,总的时间复杂度是1.5N。
另一种方法可以用分治的思想:在N个数中求最小值min和最大值max,我们只需分别求出 前后N/2个数的min和max,然后取较小的min,较大的max即可。分治法的时间复杂度计算可以借鉴下:f(2)=1(两个的话只需要比较一次),f(N)=2*f(N/2)+2=2*(2*f(N/2 2)+2)+2=……=2^((log 2N)-1)*f(N/2^((log 2N)-1))+2^((log 2N)-1)+……+2^2+2=N*f(2)/2+2^((log 2N)-1)+……+2^2+2=N/2+2*(1-N/2)/(1-2)=1.5N-2。寻找数组中的最大值和最小值
最新推荐文章于 2019-11-28 20:40:36 发布