Метод турнирной сортировки
Более эффективным при внутренней сортировке является метод турнирной сортировки, но его сложнее программировать. Название этого метода объясняется той аналогией, которую он имеет с системой распределения мест в турнире с выбыванием. Элементы объединяются в пары, противопоставляются друг другу, и победитель (меньший элемент) принимает участие в следующем туре (8<16; 2<3, таким образом 8 и 2 играют дальше, см. рис. 9.17).
Здесь они снова объединяются в пары, сравниваются и победители проходят в следующий тур (2<8; 2 проходит дальше). Так продолжается до финального тура, победитель которого и считается лучшим в турнире, т. е. наименьшим элементом в файле. Его ключу присваивается значение max, и турнир повторяется снова с тем, чтобы выявить следующий элемент рассортированного файла. (Естественно, не надо опять выполнять все сравнения, а рассмотреть только те элементы, которые встречались в предыдущем турнире с его победителем.) (3<тах; 3<8; 3<12.) Затем ключу нового победителя также присваивается значение max, и такой процесс повторяется до тех пор, пока ключам всех элементов, за исключением одного, будет присвоено значение max. Этот элемент будет последним в рассортированном файле.