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;
+}