Skip to content
This repository has been archived by the owner on Mar 14, 2024. It is now read-only.

Latest commit

History

History

sorting

sorting


  • inversions in a sequence are pair of elements that are out of order with respect to the ordering relation. a sorting algorithm is a sequence of operations that reduces inversions to zero.

  • a topological sort of a directed graph is a way of ordering the list of nodes such that if (a, b) is an edge of the graph, then a appears before b. this type of sorting does not work if a graph has cycles or is not directed.

  • because of their efficiencies, you usually want to use either merge sort or quick sort (O(N log (N)).

  • other type of sorting algorithms can be seen below and in this directory's source code:




merge sort


def ms(array):

  if len(array) < 2:
      return array

  mid = len(array) // 2
  left = array[:mid]
  right = array[mid:]

  result, i, j = [], 0, 0

  while i < len(left) and j < len(right):

      if left[i] <= right[j]:
          result.append(left[i])
          i += 1
      else:
          result.append(right[j])
          j += 1

  if left[i:]:
      result.extend(left[i:])
  if right[j:]:
      result.extend(right[j:])

  return result