どっちが速いかなんて要素数依存じゃん。
関数呼び出しのオーバーヘッドとか考えると微妙だよ。
むろん、自身のスタック再帰よりもコールバックの比較関数がね。

まあquicksort程度なら俺は暗記してるけどさ。
バブルソートはシンプルだし近い要素同士の比較だからキャッシュのヒット率は上げやすい。
まあ、要素数がそんなに無い場合だが。

C++のソートならコンパレータをインライン展開できるから速い。
ちなみに俺はよく使うのはstd::vectorコンテナとstable_sortだな。
アレって実現方法は大概、ヒープソートやマージソートあたりだな。