class InsertionSort: def __init__(self): self._data = None def sort(self, data): """ Perform an insertion sort of a list of data. """ self._data = data for p in range(1, len(self._data)): j = p while (j > 0) and (self._data[j] < self._data[j-1]): self._data[j-1], self._data[j] = \ self._data[j], self._data[j-1] # swap j -= 1 self._verify_sorted() def _verify_sorted(self): """ Verify that the data list has been successfully sorted. """ for k in range(1, len(self._data)): value = self._data[k] prev = self._data[k - 1] if value < prev: raise Exception('Sort error: ' f'{value} < {prev} at {k}')