diff --git a/11-rozdel-a-panuj/mergesort.py b/11-rozdel-a-panuj/mergesort.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ac2a352b1e7413a0b46481fd90045dd23fcff5d
--- /dev/null
+++ b/11-rozdel-a-panuj/mergesort.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python3
+
+def merge(x, y):
+    i = j = 0
+    out = []
+
+    while i < len(x) and j < len(y):
+        if x[i] < y[j]:
+            out.append(x[i])
+            i += 1
+        else:
+            out.append(y[j])
+            j += 1
+
+    if i < len(x):
+        out.extend(x[i:])
+    if j < len(y):
+        out.extend(y[j:])
+    return out
+
+def mergesort(x):
+    if len(x) <= 1:
+        return x
+
+    mid = len(x) // 2
+    return merge(mergesort(x[:mid]), mergesort(x[mid:]))
diff --git a/11-rozdel-a-panuj/quickselect.py b/11-rozdel-a-panuj/quickselect.py
new file mode 100644
index 0000000000000000000000000000000000000000..0a6117297f417136d945866c0501d614128240b1
--- /dev/null
+++ b/11-rozdel-a-panuj/quickselect.py
@@ -0,0 +1,20 @@
+#!/usr/bin/python3
+
+def quickselect(x, k):
+
+    if len(x) <= 1:
+        return x[0]
+
+    p = x[len(x) // 2]
+    vlevo = [ a for a in x if a < p ]
+    stred = [ a for a in x if a == p ]
+    vpravo = [ a for a in x if a > p ]
+    a = len(vlevo)
+    b = len(vlevo) + len(stred)
+
+    if k < a:
+        return quickselect(vlevo, k)
+    elif k < b:
+        return p
+    else:
+        return quickselect(vpravo, k-b)
diff --git a/11-rozdel-a-panuj/quicksort.py b/11-rozdel-a-panuj/quicksort.py
new file mode 100644
index 0000000000000000000000000000000000000000..5197e59d3828e3f2d14343fd5aebcfb771445ba8
--- /dev/null
+++ b/11-rozdel-a-panuj/quicksort.py
@@ -0,0 +1,12 @@
+#!/usr/bin/python3
+
+def quicksort(x):
+
+    if len(x) <= 1:
+        return x
+
+    p = x[len(x) // 2]
+    vlevo = [ a for a in x if a < p ]
+    stred = [ a for a in x if a == p ]
+    vpravo = [ a for a in x if a > p ]
+    return quicksort(vlevo) + stred + quicksort(vpravo)