diff --git a/BSP_1_E/bsp_1_e.cbp b/BSP_1_E/bsp_1_e.cbp new file mode 100644 index 0000000..3661592 --- /dev/null +++ b/BSP_1_E/bsp_1_e.cbp @@ -0,0 +1,42 @@ + + + + + + diff --git a/BSP_1_E/bsp_1_e.cpp b/BSP_1_E/bsp_1_e.cpp new file mode 100644 index 0000000..58bc2a2 --- /dev/null +++ b/BSP_1_E/bsp_1_e.cpp @@ -0,0 +1,107 @@ +#include "bsp_1_e.h" +#include +#include +#include +#include + +using namespace std; + +vector sortvec(const vector &x, const vector &y) +{ + vector result = x; + for(size_t k = 0; k genrandvec(const int &n) +{ + vector v; + srand((unsigned) time(NULL)); + for(int k=0; k gensortvec(const int & n) +{ + vector v; + for(int k = 0; k sortlist(const list &x, const list &y) +{ + list result = x; + for(auto it = y.begin(); it != y.end(); ++it) + { + auto pos = lower_bound(result.begin(), result.end(), *it); + result.insert(pos, *it); + } + // check if sorted + if(is_sorted(result.begin(), result.end()) == 0) + { + cout << "FEHLER - nicht sortiert" << endl; + } + + return result; +} + + +list genrandlist(const int &n) +{ + list v; + srand((unsigned) time(NULL)); + for(int k=0; k gensortlist(const int & n) +{ + list v; + for(int k = 0; k genlistfromvec(const vector &v) +{ + list a; + for(size_t k=0; k +#include +/** \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 sortvec(const std::vector &x, const std::vector &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 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 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 sortlist(const std::list &x, const std::list &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 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 gensortlist(const int & n); + +/** \brief Erstellt aus einem gegebenen Vektor eine Liste mit denselben Einträgen + * + * \param[in] v Vektor + * \return Liste + * + */ +std::list genlistfromvec(const std::vector &v); + +#endif // BSP_1_E_H_INCLUDED diff --git a/BSP_1_E/main.cpp b/BSP_1_E/main.cpp new file mode 100644 index 0000000..bd2ad61 --- /dev/null +++ b/BSP_1_E/main.cpp @@ -0,0 +1,36 @@ +#include "bsp_1_e.h" +#include +#include +// BSP 1_E +using namespace std; + +int main() +{ + int n = 1e4; + // verwende nicht 1e6 und höher - braucht 100s und aufwärts (Vektor) + // für 1e5 benötigt die Liste recht lang, einige Minuten + + // Vektoren + vector x = gensortvec(n); + vector y = genrandvec(n); + + auto time1start = chrono::system_clock::now(); + vector s1 = sortvec(x,y); + auto time1end = chrono::system_clock::now(); + auto time1 = chrono::duration_cast(time1end - time1start); + cout << "Vektor, n = " << n << endl; + cout << "time needed: " << time1.count() << " ms" << endl << endl; + + // Listen + list a = gensortlist(n); + list b = genlistfromvec(y); + + auto time2start = chrono::system_clock::now(); + list s2 = sortlist(a,b); + auto time2end = chrono::system_clock::now(); + auto time2 = chrono::duration_cast(time2end - time2start); + cout << "Liste, n = " << n << endl; + cout << "time needed: " << time2.count() << " ms" << endl << endl; + + return 0; +}