The Swiss Movement is a well-known tournament algorithm used in Chess, Bridge and Go tournaments (at least). It works similar to an elimination, except no-one gets eliminated; in each round, players/teams with an equal win-loss record are matched up subject to the constraint of not having played each other previously in this tournament. Clearly for a good result one wishes to have:
number of rounds > log2 (number-of-entrants);
however, having one greater number of rounds than required by this formula can at times give even better differentiation. For some types of games it is possible to enhance the scheduling even more by having a mild victory-point scale rather than pure win-loss for each match.
The mechanics of matching entrants at each round involve first sorting by win-loss record (or VP's if applicable), and then working from both ends to the middle. In case of a severe conflict near the end of the event (ie teams having to replay each other), Bridge tournaments have a policy of forcing this replay as far down the standings as possible, without creating another such conflict.
Also, to maintain interest at the low end, it is common in larger Bridge tournaments to take the bottom half of the entrants at the half-way point and start a second (new) event. (Better players have been know to term this The Swamp.)
In world-championship Bridge tournaments, a complex combination of qualifying Swiss, followed by double-elimination knock-out with repechage is used. I admit to never having explored the intricacies of this, but a search of relevant regulations for Bridge Olympiads (in particular) should provide details for this mechanism.