      "    return result\n",
      "\n",
      "\n",
      "def merge_sort(data):\n",
      "    if len(data) < 2:\n",
      "        return data\n",
      "    mid = len(data) // 2\n",
      "    left = data[0:mid]\n",
      "    right = data[mid:len(data)]\n",
      "    left = merge_sort(left)\n",
 
</s> remove     "    right = data[mid:len(data)]\n",
 </s> add     "    right = data[mid:]\n", </s> remove     "* Space: O(n), stable"
 </s> add     "* Space: O(n+m), n = number of elements, m = recursion depth\n",
    "\n",
    "Most implementations are stable."
    "    if data is None or len(data) < 2:\n",
      "    return result\n",
      "\n",
      "\n",
      "def merge_sort(data):\n",
    "    if data is None or len(data) < 2:\n",
      "        return data\n",
      "    mid = len(data) // 2\n",
      "    left = data[0:mid]\n",
      "    right = data[mid:len(data)]\n",
      "    left = merge_sort(left)\n",
keep keep keep keep replace keep keep keep keep keep
 Polish merge sort challenge and solution

Add None input test case.  Update space complexity discussion. 
sorting_searching/merge_sort/merge_sort_solution.ipynb