かなり高速なクイックソートを作成しようとしていますが、これは他の多くのアプリケーションで使用されています。
組み込みの filter(function, iterable) 関数は iterable 内のアイテムのリストを返し、関数に渡されると true を返し、1 つのリストに対して 1 つの条件のみをチェックする必要がある場合は、従来の for ループよりもはるかに高速です。
私が探しているのは、新しいリストを作成するだけでなく、古いリストから取得したアイテムを削除する非常に高速な (フィルターのような) 関数です。これにより、シングル ピボット クイックソートのアプリケーションでは、フィルター ステートメントを削除し、パーティション ルーチンをほぼ 2 倍高速化できます。
Pythonに組み込まれているそのような関数はありますか?numpy ではどうですか?そうでない場合、それを実装する最速の方法は何ですか?
参考までに、現在のパーティション コードは次のとおりです。
def partition(u):
lesser = singleQuicksort(filter(lambda num: num <= u[0], u[1:]))
greater = singleQuicksort(filter(lambda num: num > u[0], u[1:]))
return lesser, greater