[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/codejsha/algorithm-examples/main/cpp-algorithm/src/sort/sort.h [Back]  [Original]

#ifndef CPP_ALGORITHM_SORT_H
#define CPP_ALGORITHM_SORT_H

#include 

namespace Sort
{
    /**
     * \brief Selection sort algorithm.
     * \param seq sequence of elements
     * \return sorted sequence
     */
    std::vector SelectionSort(std::vector& seq);

    /**
     * \brief Insertion sort algorithm.
     * \param seq sequence of elements
     * \return sorted sequence
     */
    std::vector InsertionSort(std::vector& seq);
}

// ----------------------------------------------------------------------------
inline std::vector Sort::InsertionSort(std::vector& seq)
{
    const int size = static_cast(seq.size());

    for (int index = 1; index < size; ++index)
    {
        int key = index;
        while ((key > 0) && (seq[key] < seq[key - 1]))
        {
            std::swap(seq[key], seq[key - 1]);
            key--;
        }
    }
    return seq;
}

// ----------------------------------------------------------------------------
inline std::vector Sort::SelectionSort(std::vector& seq)
{
    for (int prev = 0; prev < static_cast(seq.size()); ++prev)
    {
        int min_index = prev;
        for (int next = prev + 1; next < static_cast(seq.size()); ++next)
        {
            if (seq[min_index] > seq[next])
            {
                min_index = next;
            }
        }
        std::swap(seq[prev], seq[min_index]);
    }
    return seq;
}

#endif

Web Proxy Viewer  |  New URL  |  Original Page