
void sort(std::vector<T> &vecc_to_sort, bool ascending_order)
{
    auto start = vecc_to_sort.begin();
    auto finish = vecc_to_sort.end();

    unsigned int d = vecc_to_sort.size()/2; //

    for(; d > 0; d/=2)
    {
        for(auto i = (start); i < (finish); ++i)
        {
            for(auto j = i; j < (finish - d); j += d)
            {
                if((*j > *(j+d) == ascending_order))
                    std::swap(*j,*(j+d));
            }
        }
    }
}