最小值和最大值文档
在一个由n个元素组成的集合中,第i个顺序统计量是该集合中的第i小的元素。本章的算法正是找出一个互异的元素集合中的第i小的元素。
①单个的最小值和最大值
在一个有n个元素的集合中,我们要确定其中最小的元素,必须要进行n-1次比较,正如MINMUM(A)算法显示的这样:
MINMUN(A):
min=A[i];
for i=2 to A.length
if min>A[i]
min=A[i];
return min;
以上的算法实现找到一个最小的元素,找最大的元素原理也是一样。从以上的分析可以看出要找出单个的最大值和最小值要执行n-1次。
②同时找出最大值和最小值
如果分别进行寻找的话,找出最大值要进行n-1次比较,找出最小值也需要进行n-1次比较总共就是2n-2次比较,但是要是同时进行寻找的话最多只需要进行3⌊n/2⌋比较。
具体做法如下:
首先,我们将一对输入元素相互进行比较,然后把较小的与当前最小的进行比较,把较大的与当前最大的进行比较。这样,对每2个元素共需进行3次比较。
我们分析一下总的比较次数,如果n是奇数,那么总共进行了3⌊n/2⌋次比较,如果n是偶数,则是先进行一个初始比较,然后进行3(n-2)/2次比较,共3n/2-2次比较。因此,不管是哪一种情况,总的比较次数至多是3⌊n/2⌋次。