pure code
1.0.0
これは、一般的なデータ構造とアルゴリズムのテキストブックの実装を目的としたプロジェクトです。デモの実装とユニットテストの両方を提供します。
コードはクリーンでシンプルであることを目的としており、効率は主要な目標ではありません。計算の複雑さの観点から最も効率的な実装を作成するか、さまざまなバージョンの実装を提供します。
コード例:
template < class Iter >
void linearInsert (Iter first, Iter last)
{
auto insertionPoint = std::upper_bound (first, last, *last);
std::rotate (insertionPoint, last, last + 1 );
}
template < class Iter >
void insertionSort (Iter first, Iter last)
{
// [begin, p) sorted
// [p, end) to be processed
for ( auto p = first; p != last; ++p) {
linearInsert (first, p);
}
}コーディングスキルを練習したい場合は、プロジェクトをダウンロードして、関連するアルゴリズムを書き換えて、ユニットテストを実行してください。
他のアルゴリズムまたはデータ構造を必要とするアルゴリズムを実装している場合、標準ライブラリまたはレポで既存の実装を使用して、メインアイデアなどに集中するだけです。
template < class Iter >
void quickSort (Iter first, Iter last)
{
if (last - first <= 1 ) {
return ;
}
auto partitionPoint = partition (first, last);
quickSort (first, partitionPoint);
quickSort (partitionPoint, last);
}上記の例では、 partition (リポジトリに実装)は、入力範囲の長さが1つより大きい場合は、次の両方の再帰呼び出しがより小さな寸法で発生することを保証する場合、2つの非空でない範囲を返すことが保証されます。
次のどちらでもこのプロジェクトに貢献できて歓迎されています。