同时找到最大值和最小值
普通的思维下,要是找最大值或者最小值,是通过遍历的方法解决的。需要n-1次遍历。而要找到最大值和最小值,则需要2(n-1)次遍历。每个元素都要进行两次比较。
然而,有没有更优化的方法呢?
有!
我们可以将要输入的元素,先进行两两比较。***将两者中较大的数字和已知的最大值进行比较,较小的值则不用在和已知 的最大的值比较。同样的,将两者中较小的数字和已知的最小值进行比较,较大的值则不用在和已知 的最最的值比较。***如此,两个数一共比较了3次。
如果,n 为奇数,那么总共进行,3 【n/2】(下取整)次比较。如果n 是偶数,则先进行一次初始比较,然后在进行3(n-2)/2次比较。共计3(n-2)/2次比较。因此,不管是那种情况,都比上一种方法要更优化。最差也是3【n/2】次。