One good way to generate worst-case initial ordering is to use a genetic algorithm. Unlike brute-forcing, this can find an answer for thousands of items.

Of course the worst case for the algorithms you have to implement aren't that interesting. A genetic algorithm would be more suited to finding a very bad case for median-of-three QuickSort, or a variant of ShellSort etc.

- Each individual is an initial order
- The fitness function is a function of the number of swaps, compares, actual time taken to sort etc
- Swap-over could consist of choosing a cut point and swapping the portion above that point
- Mutations are a simple swap