求2n个数中最大值和最小值的最少比较次数

共2n个数。前两个数比较,大的为最大值, 小的为最小值, 用掉一次比较。后面2*(n-1)个数, 每两个比较, 大的同最大值比较, 小的同最小值比较, 3*(n-1)次比较, 共3*(n - 1) + 1 = 3n - 2次比较。


例:求30000个数的最大值和最小值,最少比较次数:

第一个数和第二个数比较,大的为最大值,小的为最小值,比较1次;

后面29998个数,每两个比较,共比较29998/2次,

然后大的同最大值比,比较了29998/2次,小的同最小值比,比较了29998/2次;

故,共比较了1+3*29998/2=1+3*14999=44998次

你可能感兴趣的:(算法)