您的位置:首页 > 编程语言

【编程之美】寻找数组中的最大值和最小值

2015-08-25 09:06 288 查看
问题:对于一个由N个整数组成的数组,需要比较多少次才能把最大值和最小值的数找出来呢?

解法1:把第一个数先看成最大值,最小值,然后从第一个数起往后开始遍历每一个数,如果比当前最大值大,代替最大值。同样,如果比当前最小值还小,代替当前最小值。比较次数2*N次。



解法2:采用分治法,分前后各一半而治,在N个数中求最小值Min和Max,只需要分别求出前后N/2个数的Min和Max,然后比较较小的Min,和较大的Max即可。该算法的比较次数为1.5N-2次,对于分治法,总的比较次数仍然没减少。



扩展:如果需要找出N个数组中第二大数,需要比较多少次?

先把第一个数作为最大值,从第二个数开始遍历,如果当前最大值小于A[i],就把当前最大值作为第二大,A[i]作为当前最大值。否则,再比较当前第二大值是否比A[i]小,如果比A[i]小,A[i]才是第二大值。该算法的时间复杂度为O(N)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: