对于大小为N的数组,需要进行多少次比较?
最佳算法使用n + log n-2个比较。将元素视为竞争者,锦标赛将对其进行排名。
首先,比较树中的元素
| / \ | | / \ / \ x x x x
这需要进行n-1个比较,并且每个元素最多要进行n次比较。您将找到最大的元素作为获胜者。
第二大元素必定输给了获胜者(他不能输给其他元素),因此他是获胜者所面对的log n元素之一。您可以使用log n-1比较来查找其中的哪个。
通过对抗性论证证明了最优性。请参阅https://math.stackexchange.com/questions/1601或http://compgeom.cs.uiuc.edu/~jeffe/teaching/497/02-selection.pdf或 http://www.imada.sdu。 dk /〜jbj / DM19 / lb06.pdf或https://www.utdallas.edu/~chandra/documents/6363/lbd.pdf