#ifndef BSP_1_E_H_INCLUDED
#define BSP_1_E_H_INCLUDED

#include <vector>
#include <list>
/** \brief  Ein zufällig generierter Vektor wird in einen aufsteigend sortierten Vektor eingegliedert,
 *      sodass der Ergebnisvektor wieder aufsteigend sortiert ist
 *
 * \param[in]   x   aufsteigend sortierter Vektor
 * \param[in]   y   Zufallsvektor
 * \return      Vereinigung beider Vektoren, aufsteigend sortiert
 *
 */
std::vector<int> sortvec(const std::vector<int> &x, const std::vector<int> &y);

/** \brief  Generiert einen Zufallsvektor der Länge n mit Werten aus [1,n]
 *
 * \param[in]   n   Länge des gewünschten Vektors
 * \return      Zufallsvektor der Länge n
 *
 */
std::vector<int> genrandvec(const int &n);

/** \brief Erstellt einen Vektor der Länge n mit den aufsteigen sortierten Werten 1,2,3,....,n
 *
 * \param[in]   n   Länge des Vektors
 * \return  Vektor [1,2,3,...,n]
 *
 */
std::vector<int> gensortvec(const int & n);


/** \brief  Eine zufällig generierte Liste wird in eine aufsteigend sortierte Liste eingegliedert,
 *      sodass die Ergebnisliste wieder aufsteigend sortiert ist
 *
 * \param[in]   x   aufsteigend sortierte Liste
 * \param[in]   y   Zufallsliste
 * \return      Vereinigung beider Listen aufsteigend sortiert
 *
 */
std::list<int> sortlist(const std::list<int> &x, const std::list<int> &y);

/** \brief  Generiert eine Zufallsliste der Länge n mit Werten aus [1,n]
 *
 * \param[in]   n   Länge der gewünschten Liste
 * \return      Zufallsliste der Länge n
 *
 */
std::list<int> genrandlist(const int &n);

/** \brief Erstellt eine Liste der Länge n mit den aufsteigen sortierten Werten 1,2,3,....,n
 *
 * \param[in]   n   Länge der Liste
 * \return  Liste [1,2,3,...,n]
 *
 */
std::list<int> gensortlist(const int & n);

/** \brief Erstellt aus einem gegebenen Vektor eine Liste mit denselben Einträgen
 *
 * \param[in]   v   Vektor
 * \return Liste
 *
 */
std::list<int> genlistfromvec(const std::vector<int> &v);

#endif // BSP_1_E_H_INCLUDED
