>>296
>>288の違い、わかった気がします。
交換される回数とその後のカウントばかりに気をとられていて、
その前のループによるカウント回数の違いに気づいていませんでした。

上手くいかない方は、最初の呼び出し時の交換後にsmallとbigが同値になると
再帰される範囲に同値の要素が含まれない為、上手くソートできない場合がある。

上手くいく方は、交換後にsmallとbigが同値でもbreak前のループを通るので
同値の要素が再帰される範囲に含まれ、OK。

これであってますか?