      "            self._swap(data, i, self._find_min_index(data, i))\n",
      "        return data\n",
      "\n",
      "\n",
      "    def _sort_recursive(self, data, start):\n",
      "        if data is None:\n",
      "            return\n",
      "        if start < len(data) - 1:\n",
 
</s> remove     "def selection_sort_recursive(data, start=0):\n",
    "    if data is None:\n",
    "        return\n",
    "    if start < len(data) - 1:\n",
    "        swap(data, start, find_min_index(data, start))\n",
    "        selection_sort_recursive(data, start+1)\n",
 </s> add     "    def _sort_recursive(self, data, start):\n",
    "        if data is None:\n",
    "            return\n",
    "        if start < len(data) - 1:\n",
    "            swap(data, start, self._find_min_index(data, start))\n",
    "            self._sort_recursive(data, start+1)\n",
    "        return data\n", </s> remove     "def swap(data, i, j):\n",
    "    # Raises an exception if: \n",
    "    # -data is None\n",
    "    # -i or j are >= len(data)\n",
    "    if i != j:\n",
    "        data[i], data[j] = data[j], data[i]\n",
 </s> add     "    def sort_iterative_alt(self, data):\n",
    "        if data is None:\n",
    "            raise TypeError('data cannot be None')\n",
    "        if len(data) < 2:\n",
    "            return data\n",
    "        for i in range(len(data)-1):\n",
    "            self._swap(data, i, self._find_min_index(data, i))\n",
    "        return data\n", </s> remove     "def selection_sort_iterative_alt(data):\n",
    "    if data is None or len(data) < 2:\n",
    "        return\n",
    "    for i in range(len(data)-1):\n",
    "        swap(data, i, find_min_index(data, i))"
 </s> add     "    def _swap(self, data, i, j):\n",
    "        if i != j:\n",
    "            data[i], data[j] = data[j], data[i]\n",
    "        return data"
    "    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",
      "            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",
      "\n",
      "    def _sort_recursive(self, data, start):\n",
      "        if data is None:\n",
      "            return\n",
      "        if start < len(data) - 1:\n",
keep keep add keep keep keep keep keep
 Update selection sort challenge (#131)

Update constraints, test cases, code, and tests. 
sorting_searching/selection_sort/selection_sort_solution.ipynb