1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import errors
# Recursive merge sort algorithm
# https://rosettacode.org/wiki/Sorting_algorithms/Merge_sort#Python
def merge(x, y, i):
if x == []:
return y
if y == []:
return x
return (
[x[0]] + merge(x[1:], y, i)
if x[0][i] < y[0][i]
else [y[0]] + merge(x, y[1:], i)
)
def sort(a, n, i):
m = n // 2
return (
a
if n <= 1
else merge(sort(a[:m], m, i), sort(a[m:], n - m, i), i)
)
class dictionary:
def __init__(self):
self.data = []
self.size = 0
def add(self, key, value):
if type(value) != int:
self.data.append([key, value])
self.size += 1
# Sort dictionary by value
def sort_by_value(self):
self.data = sort_v(self.data, self.size, 1)
|