      "* Merge the left array + pivot + right array\n",
      "\n",
      "Complexity:\n",
      "* Time: O(n log(n)) average, best, O(n^2) worst\n",
      "* Space: O(n), n extra space, n recursion depth, generally not stable"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
 
</s> remove   {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Pythonic-Code\n",
    "\n",
    "The following code from [Stack Overflow](http://stackoverflow.com/questions/18262306/quick-sort-with-python) is very concise, although it might be a little difficult to read:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def quick_sort_alt(arr):\n",
    "    if len(arr) <= 1:\n",
    "        return arr\n",
    "    else:\n",
    "        return quick_sort_alt([x for x in arr[1:] if x < arr[0]]) + [arr[0]] + quick_sort_alt([x for x in arr[1:] if x >= arr[0]])"
   ]
  },
 </s> add  </s> remove    "execution_count": 4,
 </s> add    "execution_count": 3, </s> remove    "execution_count": 3,
 </s> add    "execution_count": 2,
    "* Space: O(n+m), n = number of elements, m = recursion depth\n",
    "\n",
    "Most implementations are not stable."
      "* Merge the left array + pivot + right array\n",
      "\n",
      "Complexity:\n",
      "* Time: O(n log(n)) average, best, O(n^2) worst\n",
    "* Space: O(n+m), n = number of elements, m = recursion depth\n",
    "\n",
    "Most implementations are not stable."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
keep keep keep keep replace keep keep keep keep keep
 Polish quicksort challenge and solution

Add None input test case.  Remove difficult to read 'Pythonic' solution.  Update space complexity discussion. 
sorting_searching/quick_sort/quick_sort_solution.ipynb