wrongwrongな開発日記

しんまいさんの忘備録

【Golang】QuickSort、訂正

wrongwrong163377.hatenablog.com
wrongwrong163377.hatenablog.com
以前の2記事のQuickSortに非効率な間違いがあったので訂正します。

間違っていたところ

再帰の門番ではLengthが2以下、つまり3未満で判定する必要がありましたが、2未満で判定してました。釣られて長さ1以下の判定を長さ1未満でやってました。
以下がついでに気に入らないところも直した修正版の門番です。

//門番
if len(arr) < 3{
	if !(len(arr) < 2 || arr[0] < arr[1]) {
		arr[0], arr[1] = arr[1], arr[0]
	}
	return arr
}

計測結果について

ロジックの間違いのせいで無駄にネストが深くなっていたため、今回の門番の方が効率は良いはずです。
という訳で図り直したりなんだりしていましたが、どうもCPUの調子が悪いのか結果が安定せず……。
並列化で実行時間は大体80%位になるという結論は変わらなかったので記事はそのままにします。