aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/algorithms
diff options
context:
space:
mode:
Diffstat (limited to 'algorithms')
-rw-r--r--algorithms/impl/__init__.py4
-rw-r--r--algorithms/impl/bubble_sort.py6
-rw-r--r--algorithms/impl/heapsort.py4
-rw-r--r--algorithms/impl/insertion_sort.py4
-rw-r--r--algorithms/impl/median.py6
-rw-r--r--algorithms/impl/merge_sort.py4
-rw-r--r--algorithms/impl/quicksort.py12
-rw-r--r--algorithms/impl/selection_sort.py4
-rw-r--r--algorithms/input_kind.py8
-rw-r--r--algorithms/params.py30
-rw-r--r--algorithms/plotter.py2
-rwxr-xr-xalgorithms/scripts/plot.py62
-rwxr-xr-xalgorithms/scripts/test.py38
13 files changed, 92 insertions, 92 deletions
diff --git a/algorithms/impl/__init__.py b/algorithms/impl/__init__.py
index f2d5aaf..ebc1ab2 100644
--- a/algorithms/impl/__init__.py
+++ b/algorithms/impl/__init__.py
@@ -9,7 +9,7 @@ from pkgutil import iter_modules
from .. import algorithm
-_ALGORITHMS_NAME = '_ALGORITHMS'
+_ALGORITHMS_NAME = "_ALGORITHMS"
def refresh_algorithms():
@@ -18,7 +18,7 @@ def refresh_algorithms():
for _, module_name, is_pkg in iter_modules([os.path.dirname(__file__)]):
if is_pkg:
continue
- module = import_module('.' + module_name, __package__)
+ module = import_module("." + module_name, __package__)
if hasattr(module, _ALGORITHMS_NAME):
module_algorithms = getattr(module, _ALGORITHMS_NAME)
for descr in module_algorithms:
diff --git a/algorithms/impl/bubble_sort.py b/algorithms/impl/bubble_sort.py
index 14f5386..ac9621f 100644
--- a/algorithms/impl/bubble_sort.py
+++ b/algorithms/impl/bubble_sort.py
@@ -35,9 +35,9 @@ def bubble_sort_optimized(xs):
_ALGORITHMS = [
- SortingAlgorithm('bubble_sort', 'Bubble sort', bubble_sort),
+ SortingAlgorithm("bubble_sort", "Bubble sort", bubble_sort),
SortingAlgorithm(
- 'bubble_sort_optimized', 'Bubble sort (optimized)', bubble_sort_optimized
+ "bubble_sort_optimized", "Bubble sort (optimized)", bubble_sort_optimized
),
]
@@ -54,5 +54,5 @@ def main(args=None):
print(bubble_sort_optimized(list(xs)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/impl/heapsort.py b/algorithms/impl/heapsort.py
index 81bea20..4299c91 100644
--- a/algorithms/impl/heapsort.py
+++ b/algorithms/impl/heapsort.py
@@ -63,7 +63,7 @@ def _siftdown(xs, start, end):
_ALGORITHMS = [
- SortingAlgorithm('heapsort', 'Heapsort', heapsort),
+ SortingAlgorithm("heapsort", "Heapsort", heapsort),
]
@@ -78,5 +78,5 @@ def main(args=None):
print(heapsort(list(xs)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/impl/insertion_sort.py b/algorithms/impl/insertion_sort.py
index 13f16a0..f87e62e 100644
--- a/algorithms/impl/insertion_sort.py
+++ b/algorithms/impl/insertion_sort.py
@@ -18,7 +18,7 @@ def insertion_sort(xs):
_ALGORITHMS = [
- SortingAlgorithm('insertion_sort', 'Insertion sort', insertion_sort),
+ SortingAlgorithm("insertion_sort", "Insertion sort", insertion_sort),
]
@@ -33,5 +33,5 @@ def main(args=None):
print(insertion_sort(list(xs)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/impl/median.py b/algorithms/impl/median.py
index 7b75219..2fcc4a1 100644
--- a/algorithms/impl/median.py
+++ b/algorithms/impl/median.py
@@ -47,9 +47,9 @@ def calc_median_sorting(xs):
_ALGORITHMS = [
Algorithm(
- 'median_sorting', 'Median value (using explicit sorting)', calc_median_sorting
+ "median_sorting", "Median value (using explicit sorting)", calc_median_sorting
),
- Algorithm('median_heaps', 'Median value (using heaps)', calc_median_heaps),
+ Algorithm("median_heaps", "Median value (using heaps)", calc_median_heaps),
]
@@ -65,5 +65,5 @@ def main(args=None):
print(calc_median_heaps(list(xs)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/impl/merge_sort.py b/algorithms/impl/merge_sort.py
index fecdf78..363cc85 100644
--- a/algorithms/impl/merge_sort.py
+++ b/algorithms/impl/merge_sort.py
@@ -33,7 +33,7 @@ def merge_sort(xs):
_ALGORITHMS = [
- SortingAlgorithm('merge_sort', 'Merge sort', merge_sort),
+ SortingAlgorithm("merge_sort", "Merge sort", merge_sort),
]
@@ -48,5 +48,5 @@ def main(args=None):
print(merge_sort(list(xs)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/impl/quicksort.py b/algorithms/impl/quicksort.py
index 9274c21..6f8e823 100644
--- a/algorithms/impl/quicksort.py
+++ b/algorithms/impl/quicksort.py
@@ -76,19 +76,19 @@ def quicksort_random(xs):
_ALGORITHMS = [
SortingAlgorithm(
- 'quicksort_first', 'Quicksort (first element as pivot)', quicksort_first
+ "quicksort_first", "Quicksort (first element as pivot)", quicksort_first
),
SortingAlgorithm(
- 'quicksort_second', 'Quicksort (second element as pivot)', quicksort_second
+ "quicksort_second", "Quicksort (second element as pivot)", quicksort_second
),
SortingAlgorithm(
- 'quicksort_middle', 'Quicksort (middle element as pivot)', quicksort_middle
+ "quicksort_middle", "Quicksort (middle element as pivot)", quicksort_middle
),
SortingAlgorithm(
- 'quicksort_last', 'Quicksort (last element as pivot)', quicksort_last
+ "quicksort_last", "Quicksort (last element as pivot)", quicksort_last
),
SortingAlgorithm(
- 'quicksort_random', 'Quicksort (random element as pivot)', quicksort_random
+ "quicksort_random", "Quicksort (random element as pivot)", quicksort_random
),
]
@@ -108,5 +108,5 @@ def main(args=None):
print(quicksort_random(list(xs)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/impl/selection_sort.py b/algorithms/impl/selection_sort.py
index e9a5a09..9591169 100644
--- a/algorithms/impl/selection_sort.py
+++ b/algorithms/impl/selection_sort.py
@@ -20,7 +20,7 @@ def selection_sort(xs):
_ALGORITHMS = [
- SortingAlgorithm('selection_sort', 'Selection sort', selection_sort),
+ SortingAlgorithm("selection_sort", "Selection sort", selection_sort),
]
@@ -35,5 +35,5 @@ def main(args=None):
print(selection_sort(list(xs)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/input_kind.py b/algorithms/input_kind.py
index 53938b0..b91d298 100644
--- a/algorithms/input_kind.py
+++ b/algorithms/input_kind.py
@@ -11,23 +11,23 @@ seed()
class InputKind(Enum):
- BEST, AVERAGE, WORST = 'best', 'average', 'worst'
+ BEST, AVERAGE, WORST = "best", "average", "worst"
def __str__(self):
return self.value
def _gen_input_from(xs):
- return array('l', xs)
+ return array("l", xs)
def gen_input_for_sorting(n, case=InputKind.AVERAGE):
if n < 0:
- raise ValueError('input length cannot be less than zero')
+ raise ValueError("input length cannot be less than zero")
if case is InputKind.BEST:
return _gen_input_from(range(n))
if case is InputKind.AVERAGE:
return _gen_input_from(sample(range(n), n))
if case is InputKind.WORST:
return _gen_input_from(range(n - 1, -1, -1))
- raise NotImplementedError('invalid input kind: ' + str(case))
+ raise NotImplementedError("invalid input kind: " + str(case))
diff --git a/algorithms/params.py b/algorithms/params.py
index d1122c4..818ca47 100644
--- a/algorithms/params.py
+++ b/algorithms/params.py
@@ -13,9 +13,9 @@ from .timer import Timer
class TimeUnits(Enum):
- SECONDS = 'seconds'
- MILLISECONDS = 'milliseconds'
- MICROSECONDS = 'microseconds'
+ SECONDS = "seconds"
+ MILLISECONDS = "milliseconds"
+ MICROSECONDS = "microseconds"
def get_factor(self):
if self is TimeUnits.SECONDS:
@@ -24,7 +24,7 @@ class TimeUnits(Enum):
return 1000.0
if self is TimeUnits.MICROSECONDS:
return 1000000.0
- raise NotImplementedError('invalid time units: ' + str(self))
+ raise NotImplementedError("invalid time units: " + str(self))
def __str__(self):
return self.value
@@ -56,12 +56,12 @@ class AlgorithmParameters:
@min_len.setter
def min_len(self, val):
if not isinstance(val, Integral):
- raise TypeError('must be an integral value')
+ raise TypeError("must be an integral value")
val = int(val)
if val < 0:
- raise ValueError('must be non-negative')
+ raise ValueError("must be non-negative")
if self.max_len is not None and self.max_len < val:
- raise ValueError('must not be greater than the maximum length')
+ raise ValueError("must not be greater than the maximum length")
self._min_len = val
@property
@@ -71,12 +71,12 @@ class AlgorithmParameters:
@max_len.setter
def max_len(self, val):
if not isinstance(val, Integral):
- raise TypeError('must be an integral value')
+ raise TypeError("must be an integral value")
val = int(val)
if val < 0:
- raise ValueError('must be non-negative')
+ raise ValueError("must be non-negative")
if self.min_len is not None and self.min_len > val:
- raise ValueError('must not be lesser than the minimum length')
+ raise ValueError("must not be lesser than the minimum length")
self._max_len = val
@property
@@ -86,10 +86,10 @@ class AlgorithmParameters:
@iterations.setter
def iterations(self, val):
if not isinstance(val, Integral):
- raise TypeError('must be an integral value')
+ raise TypeError("must be an integral value")
val = int(val)
if val < 1:
- raise ValueError('must be positive')
+ raise ValueError("must be positive")
self._iterations = val
def measure_running_time(self):
@@ -105,14 +105,14 @@ class AlgorithmParameters:
@staticmethod
def _format_plot_xlabel():
- return 'Input length'
+ return "Input length"
@staticmethod
def _format_plot_ylabel(units):
- return 'Running time ({})'.format(units)
+ return "Running time ({})".format(units)
def _format_plot_title(self):
- return '{}, {} case'.format(self.algorithm.display_name, self.input_kind)
+ return "{}, {} case".format(self.algorithm.display_name, self.input_kind)
def _format_plot_suptitle(self):
return self.algorithm.display_name
diff --git a/algorithms/plotter.py b/algorithms/plotter.py
index d3e4ee4..f755144 100644
--- a/algorithms/plotter.py
+++ b/algorithms/plotter.py
@@ -9,7 +9,7 @@ import matplotlib.pyplot as plt
class PlotBuilder:
def __init__(self):
self._fig, self._ax = plt.subplots(figsize=(8, 6), dpi=200)
- self._ax.grid(alpha=0.8, linestyle=':')
+ self._ax.grid(alpha=0.8, linestyle=":")
def plot(self, title, xlabel, ylabel, xs, ys):
self._ax.set_title(title)
diff --git a/algorithms/scripts/plot.py b/algorithms/scripts/plot.py
index 5eb8b16..25a87f7 100755
--- a/algorithms/scripts/plot.py
+++ b/algorithms/scripts/plot.py
@@ -40,9 +40,9 @@ def _parse_non_negative_integer(s):
try:
n = int(s)
except ValueError:
- raise argparse.ArgumentTypeError('must be a non-negative integer: ' + str(s))
+ raise argparse.ArgumentTypeError("must be a non-negative integer: " + str(s))
if n < 0:
- raise argparse.ArgumentTypeError('must be a non-negative integer')
+ raise argparse.ArgumentTypeError("must be a non-negative integer")
return n
@@ -50,9 +50,9 @@ def _parse_positive_integer(s):
try:
n = int(s)
except ValueError:
- raise argparse.ArgumentTypeError('must be a positive integer: ' + str(s))
+ raise argparse.ArgumentTypeError("must be a positive integer: " + str(s))
if n < 1:
- raise argparse.ArgumentTypeError('must be a positive integer')
+ raise argparse.ArgumentTypeError("must be a positive integer")
return n
@@ -60,16 +60,16 @@ def _parse_input_kind(s):
try:
return InputKind(s)
except ValueError:
- raise argparse.ArgumentTypeError('invalid input kind: ' + str(s))
+ raise argparse.ArgumentTypeError("invalid input kind: " + str(s))
def _format_algorithm(codename):
- return '* {}: {}'.format(codename, registry.get(codename).display_name)
+ return "* {}: {}".format(codename, registry.get(codename).display_name)
def _format_available_algorithms():
- descr = 'available algorithms (in the CODENAME: DISPLAY_NAME format):\n'
- return descr + '\n'.join(map(_format_algorithm, sorted(registry.get_codenames())))
+ descr = "available algorithms (in the CODENAME: DISPLAY_NAME format):\n"
+ return descr + "\n".join(map(_format_algorithm, sorted(registry.get_codenames())))
def _format_description():
@@ -89,48 +89,48 @@ def _parse_args(args=None):
parser = _create_argument_parser()
parser.add_argument(
- 'algorithm',
- metavar='CODENAME',
+ "algorithm",
+ metavar="CODENAME",
choices=registry.get_codenames(),
- help='algorithm codename',
+ help="algorithm codename",
)
parser.add_argument(
- '--iterations',
- '-r',
- metavar='N',
+ "--iterations",
+ "-r",
+ metavar="N",
type=_parse_positive_integer,
default=_DEFAULT_ITERATIONS,
- help='set number of algorithm iterations',
+ help="set number of algorithm iterations",
)
parser.add_argument(
- '--input',
- '-i',
- dest='input_kind',
+ "--input",
+ "-i",
+ dest="input_kind",
choices=InputKind,
type=_parse_input_kind,
default=_DEFAULT_INPUT_KIND,
- help='specify input kind',
+ help="specify input kind",
)
parser.add_argument(
- '--min',
- '-a',
- metavar='N',
- dest='min_len',
+ "--min",
+ "-a",
+ metavar="N",
+ dest="min_len",
type=_parse_non_negative_integer,
default=_DEFAULT_MIN_LENGTH,
- help='set min input length',
+ help="set min input length",
)
parser.add_argument(
- '--max',
- '-b',
- metavar='N',
- dest='max_len',
+ "--max",
+ "-b",
+ metavar="N",
+ dest="max_len",
type=_parse_non_negative_integer,
default=_DEFAULT_MAX_LENGTH,
- help='set max input length',
+ help="set max input length",
)
parser.add_argument(
- '--output', '-o', metavar='PATH', dest='output_path', help='set plot file path'
+ "--output", "-o", metavar="PATH", dest="output_path", help="set plot file path"
)
return parser.parse_args(args)
@@ -140,5 +140,5 @@ def main(args=None):
plot_algorithm(**vars(_parse_args(args)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()
diff --git a/algorithms/scripts/test.py b/algorithms/scripts/test.py
index 42b1be8..52acc34 100755
--- a/algorithms/scripts/test.py
+++ b/algorithms/scripts/test.py
@@ -30,9 +30,9 @@ def _parse_non_negative_integer(s):
try:
n = int(s)
except ValueError:
- raise argparse.ArgumentTypeError('must be a non-negative integer: ' + str(s))
+ raise argparse.ArgumentTypeError("must be a non-negative integer: " + str(s))
if n < 0:
- raise argparse.ArgumentTypeError('must be a non-negative integer')
+ raise argparse.ArgumentTypeError("must be a non-negative integer")
return n
@@ -40,16 +40,16 @@ def _parse_input_kind(s):
try:
return InputKind(s)
except ValueError:
- raise argparse.ArgumentTypeError('invalid input kind: ' + str(s))
+ raise argparse.ArgumentTypeError("invalid input kind: " + str(s))
def _format_algorithm(codename):
- return '* {}: {}'.format(codename, registry.get(codename).display_name)
+ return "* {}: {}".format(codename, registry.get(codename).display_name)
def _format_available_algorithms():
- descr = 'available algorithms (in the CODENAME: DISPLAY_NAME format):\n'
- return descr + '\n'.join(map(_format_algorithm, sorted(registry.get_codenames())))
+ descr = "available algorithms (in the CODENAME: DISPLAY_NAME format):\n"
+ return descr + "\n".join(map(_format_algorithm, sorted(registry.get_codenames())))
def _format_description():
@@ -69,28 +69,28 @@ def _parse_args(args=None):
parser = _create_argument_parser()
parser.add_argument(
- 'algorithm',
- metavar='CODENAME',
+ "algorithm",
+ metavar="CODENAME",
choices=registry.get_codenames(),
- help='algorithm codename',
+ help="algorithm codename",
)
parser.add_argument(
- '--input',
- '-i',
- dest='input_kind',
+ "--input",
+ "-i",
+ dest="input_kind",
choices=InputKind,
type=_parse_input_kind,
default=_DEFAULT_INPUT_KIND,
- help='specify input kind',
+ help="specify input kind",
)
parser.add_argument(
- '--length',
- '-l',
- '-n',
- metavar='N',
+ "--length",
+ "-l",
+ "-n",
+ metavar="N",
type=_parse_non_negative_integer,
default=_DEFAULT_LENGTH,
- help='set input length',
+ help="set input length",
)
return parser.parse_args(args)
@@ -100,5 +100,5 @@ def main(args=None):
test(**vars(_parse_args(args)))
-if __name__ == '__main__':
+if __name__ == "__main__":
main()