diff --git a/20160107/malloc-1.c b/20160107/malloc-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..c9192fbfbfd746e7c9d5edef4daaff5c4a537e67
--- /dev/null
+++ b/20160107/malloc-1.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  int *buffer = NULL;
+
+  buffer = malloc (24 * sizeof (int));   /* 42 Integer-Variable anlegen */
+                /* ^^ Zahlendreher infolge Code-Verdopplung! */
+
+  for (int i = 0; i < 42; i++)
+    buffer[i] = i;
+
+  /* free() vergessen! :-( */
+
+  return 0;
+}
diff --git a/20160107/malloc-2.c b/20160107/malloc-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..ad46614b2d0ae0dfe5e3722a149c98fd82482b8d
--- /dev/null
+++ b/20160107/malloc-2.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  int *buffer = NULL;
+
+  buffer = malloc (24 * sizeof (int));   /* 42 Integer-Variable anlegen */
+                /* ^^ Zahlendreher infolge Code-Verdopplung! */
+
+  for (int i = 0; i < 1042; i++)
+    buffer[i] = i;
+
+  /* free() vergessen! :-( */
+
+  return 0;
+}
diff --git a/20160107/malloc-3.c b/20160107/malloc-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..815685106bb55b9e24e2a9acc8fc028f3fe88b9e
--- /dev/null
+++ b/20160107/malloc-3.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  int *buffer = NULL;
+
+  buffer = malloc (24 * sizeof (int));   /* 42 Integer-Variable anlegen */
+                /* ^^ Zahlendreher infolge Code-Verdopplung! */
+
+  for (int i = 0; i < 42000; i++)
+    buffer[i] = i;
+
+  /* free() vergessen! :-( */
+
+  return 0;
+}
diff --git a/20160107/malloc-4.c b/20160107/malloc-4.c
new file mode 100644
index 0000000000000000000000000000000000000000..e52a6940a0213f6ddaaa210ec77f397cea6c8f1f
--- /dev/null
+++ b/20160107/malloc-4.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main (void)
+{
+  int *buffer = NULL;
+
+  buffer = malloc (24 * sizeof (int));   /* 42 Integer-Variable anlegen */
+                /* ^^ Zahlendreher infolge Code-Verdopplung! */
+
+  for (int i = 0; i < 42000; i++)
+    {
+      printf ("i = %d\n", i);
+      buffer[i] = i;
+    }
+
+  /* free() vergessen! :-( */
+
+  return 0;
+}
diff --git a/20160107/malloc-5.c b/20160107/malloc-5.c
new file mode 100644
index 0000000000000000000000000000000000000000..d721ce07b4fd97eacea30886a33366a7f48fd1e2
--- /dev/null
+++ b/20160107/malloc-5.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#define SIZE 42
+
+int main (void)
+{
+  int *buffer = NULL;
+  buffer = malloc (SIZE * sizeof (int));   /* SIZE Integer-Variable anlegen */
+
+  for (int i = 0; i < SIZE; i++)
+    buffer[i] = i;
+
+  free (buffer);
+  return 0;
+}
diff --git a/20160107/sort-10.c b/20160107/sort-10.c
new file mode 100644
index 0000000000000000000000000000000000000000..becc47414dcce01d852decad29b3f62cfc21466f
--- /dev/null
+++ b/20160107/sort-10.c
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+int comp_counter = 0;
+
+void clear_screen (void)
+{
+  printf ("\e[H\e[J");
+}
+
+void output_marked (char **name, int mark1, int mark2)
+{
+  clear_screen ();
+  for (int i = 0; name[i]; i++)
+    if (i == mark1 || i == mark2)
+      printf ("%s <--\n", name[i]);
+    else
+      printf ("%s\n", name[i]);
+  printf ("%d\n", comp_counter);
+}
+
+void output (char **name)
+{
+  output_marked (name, -1, -1);
+}
+
+int compare (char **name, int left, int right)
+{
+  comp_counter++;
+  output_marked (name, left, right);
+  usleep (200000);
+  return strcmp (name[left], name[right]);
+}
+
+void sort (char **name)
+{
+  int target = 0;
+  while (name[target])
+    target++;             /* Länge des Arrays ermitteln */
+  int start = 1;
+  while (target > 0)
+    {
+      for (int i = start; i < target; i++)
+        if (compare (name, i - 1, i) > 0)
+          {
+            char *temp = name[i - 1];
+            name[i - 1] = name[i];
+            name[i] = temp;
+          }
+      target--;
+    }
+}
+
+int main (void)
+{
+  char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
+                   "Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
+                   "Thomas", "Ulrich", "Zacharias", NULL };
+  sort (name);
+  return 0;
+}
diff --git a/20160107/sort-11.c b/20160107/sort-11.c
new file mode 100644
index 0000000000000000000000000000000000000000..3779a562c2bc1275629e233fbe2e853b315f5369
--- /dev/null
+++ b/20160107/sort-11.c
@@ -0,0 +1,64 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+int comp_counter = 0;
+
+void clear_screen (void)
+{
+  printf ("\e[H\e[J");
+}
+
+void output_marked (char **name, int mark1, int mark2)
+{
+  clear_screen ();
+  for (int i = 0; name[i]; i++)
+    if (i == mark1 || i == mark2)
+      printf ("%s <--\n", name[i]);
+    else
+      printf ("%s\n", name[i]);
+  printf ("%d\n", comp_counter);
+}
+
+void output (char **name)
+{
+  output_marked (name, -1, -1);
+}
+
+int compare (char **name, int left, int right)
+{
+  comp_counter++;
+  output_marked (name, left, right);
+  usleep (200000);
+  return strcmp (name[left], name[right]);
+}
+
+void sort (char **name)
+{
+  int target = 0;
+  while (name[target])
+    target++;             /* Länge des Arrays ermitteln */
+  int start = 1;
+  int last_swap = 0;
+  while (target > 0)
+    {
+      for (int i = start; i < target; i++)
+        if (compare (name, i - 1, i) > 0)
+          {
+            last_swap = i;
+            char *temp = name[i - 1];
+            name[i - 1] = name[i];
+            name[i] = temp;
+          }
+      target = last_swap;
+    }
+}
+
+int main (void)
+{
+  char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
+                   "Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
+                   "Thomas", "Ulrich", "Zacharias", NULL };
+  sort (name);
+  return 0;
+}
diff --git a/20160107/sort-12.c b/20160107/sort-12.c
new file mode 100644
index 0000000000000000000000000000000000000000..f40cc2a4d117d5a282b871856e762ff4e359c842
--- /dev/null
+++ b/20160107/sort-12.c
@@ -0,0 +1,64 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+int comp_counter = 0;
+
+void clear_screen (void)
+{
+  printf ("\e[H\e[J");
+}
+
+void output_marked (char **name, int mark1, int mark2)
+{
+  clear_screen ();
+  for (int i = 0; name[i]; i++)
+    if (i == mark1 || i == mark2)
+      printf ("%s <--\n", name[i]);
+    else
+      printf ("%s\n", name[i]);
+  printf ("%d\n", comp_counter);
+}
+
+void output (char **name)
+{
+  output_marked (name, -1, -1);
+}
+
+int compare (char **name, int left, int right)
+{
+  comp_counter++;
+  output_marked (name, left, right);
+  usleep (200000);
+  return strcmp (name[left], name[right]);
+}
+
+void sort (char **name)
+{
+  int target = 0;
+  while (name[target])
+    target++;             /* Länge des Arrays ermitteln */
+  int start = 1;
+  while (target > 0)
+    {
+      int last_swap = 0;
+      for (int i = start; i < target; i++)
+        if (compare (name, i - 1, i) > 0)
+          {
+            last_swap = i;
+            char *temp = name[i - 1];
+            name[i - 1] = name[i];
+            name[i] = temp;
+          }
+      target = last_swap;
+    }
+}
+
+int main (void)
+{
+  char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
+                   "Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
+                   "Thomas", "Ulrich", "Zacharias", NULL };
+  sort (name);
+  return 0;
+}
diff --git a/20160107/sort-13.c b/20160107/sort-13.c
new file mode 100644
index 0000000000000000000000000000000000000000..484a5ba43e4c92af8fd1aa8fb3c6e36d79140627
--- /dev/null
+++ b/20160107/sort-13.c
@@ -0,0 +1,74 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int comp_counter = 0;
+
+void clear_screen (void)
+{
+  printf ("\e[H\e[J");
+}
+
+void output_marked (char **name, int mark)
+{
+  clear_screen ();
+  for (int i = 0; name[i]; i++)
+    if (i == mark)
+      printf ("%s <--\n", name[i]);
+    else
+      printf ("%s\n", name[i]);
+  printf ("%d\n", comp_counter);
+}
+
+void output (char **name)
+{
+  output_marked (name, -1);
+}
+
+int compare (char **name, int left, char *right)
+{
+  comp_counter++;
+  output_marked (name, left);
+  usleep (100000);
+  return strcmp (name[left], right);
+}
+
+void sort (char **name, int left, int right)  /* QuickSort */
+{
+  if (left < right)
+    {
+      int middle = left + rand () % (right - left + 1);
+      char *test = name[middle];
+      int l = left;
+      int r = right;
+      while (l <= r)
+        {
+          while (compare (name, l, test) < 0)
+            l++;
+          while (compare (name, r, test) > 0)
+            r--;
+          if (l <= r)
+            {
+              char *temp = name[l];
+              name[l] = name[r];
+              name[r] = temp;
+              l++;
+              r--;
+            }
+        }
+      sort (name, left, r);
+      sort (name, l, right);
+    }
+}
+
+int main (void)
+{
+  char *names[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
+                    "Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
+                    "Thomas", "Ulrich", "Zacharias", NULL };
+  srand (13);
+  sort (names, 0, 15);
+  output (names);
+  return 0;
+}
diff --git a/20160107/sort-9.c b/20160107/sort-9.c
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ddbd62ebcd6c5a15aa469f480fff01ca8dae4
--- /dev/null
+++ b/20160107/sort-9.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <string.h>
+
+void sort (char **name)
+{
+  int target = 0;
+  while (name[target])
+    target++;             /* Länge des Arrays ermitteln */
+  while (target > 0)
+    {
+      for (int i = 1; i < target; i++)
+        if (strcmp (name[i - 1], name[i]) > 0)
+          {
+            char *temp = name[i - 1];
+            name[i - 1] = name[i];
+            name[i] = temp;
+          }
+      target--;
+    }
+}
+
+int main (void)
+{
+  char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
+                   "Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
+                   "Thomas", "Ulrich", "Zacharias", NULL };
+  sort (name);
+  for (int i = 0; name[i]; i++)
+    printf ("%s\n", name[i]);
+  return 0;
+}