      "        for i in range(len(data)-1):\n",
      "            self._swap(data, i, self._find_min_index(data, i))\n",
      "        return data\n",
      "\n",
      "    def sort_recursive(self, data, start=0):\n",
      "        if data is None:\n",
      "            raise TypeError('data cannot be None')\n",
      "        if len(data) < 2:\n",
      "            return data\n",
      "        return self._sort_recursive(data, start)\n",
 
</s> remove     "        return self._sort_recursive(data, start)\n",
 </s> add     "        return self._sort_recursive(data, start=0)\n", </s> remove     "* Space: O(1) iterative, O(m) recursive where m is the recursion depth (unless tail-call elimination is available, then O(1)), generally not stable\n",
    "    * Note: Tail call elimination is not inherently available in Python. See the following [StackOverflow post](http://stackoverflow.com/a/13592002)."
 </s> add     "* Space: O(1) iterative, O(m) recursive where m is the recursion depth (unless tail-call elimination is available, then O(1))\n",
    "    * Note: Tail call elimination is not inherently available in Python, see the following [StackOverflow post](http://stackoverflow.com/a/13592002).\n",
    "\n",
    "Misc: \n",
    "\n",
    "* In-place\n",
    "* Most implementations are not stable, due to swapping of values\n",
    "\n",
    "Selection sort might be a good option if moving elements is more expensive than comparing them, as it requires at most n-1 swaps.\n",
    "\n",
    "The finding of a minimum element can be done with a min heap, which would change the worst-case run time to O(n log(n)) and increase the space to O(n).  This is called a heap sort."
    "    def sort_recursive(self, data):\n",
      "        for i in range(len(data)-1):\n",
      "            self._swap(data, i, self._find_min_index(data, i))\n",
      "        return data\n",
      "\n",
    "    def sort_recursive(self, data):\n",
      "        if data is None:\n",
      "            raise TypeError('data cannot be None')\n",
      "        if len(data) < 2:\n",
      "            return data\n",
      "        return self._sort_recursive(data, start)\n",
keep keep keep keep replace keep keep keep keep keep
 Update selection sort challenge algorithm discussion (#139) 
sorting_searching/selection_sort/selection_sort_solution.ipynb