どもども。どうにか実装できました。
ソートアルゴリズムにはあまり明るくないんですが、
同じソート関数で昇順と降順を交互に変更できる
んですかね。

最初、昇順のときと降順のときでソート関数の符号が
+-逆になるように比較関数を書いてみたんですが、
どうも動作がおかしいので、符号を逆にすることを
やめたら、正しくソートされるようになりました。
(以前は2回ソートするとソート順が変わるようになっていた)