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 (在存储库中实现)返回两个非空范围,以确保我们确保以下两个递归调用将在较小的维度上发生。
您欢迎您通过以下任意