pure code
1.0.0
이것은 공통 데이터 구조 및 알고리즘의 교과서 구현을 목표로하는 프로젝트입니다. 데모 구현과 단위 테스트를 모두 제공합니다.
코드는 깨끗 하고 단순 하기위한 것이며 효율성이 주요 목표는 아닙니다. 계산 복잡성 측면에서 가장 효율적인 구현을 작성하거나 다양한 버전의 구현을 제공 할 것입니다.
Code example:
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 (repo에서 구현)은 입력 범위의 길이가 하나보다 큰 경우 두 개의 비어 있지 않은 범위를 반환하도록 보장됩니다.
당신은 다음 중 하나에 의해이 프로젝트에 기여하는 것을 환영합니다.