     "metadata": {},
     "source": [
      "## Constraints\n",
      "\n",
      "* Is a naiive solution sufficient?\n",
      "    * Yes\n",
      "* Are duplicates allowed?\n",
      "    * Yes\n",
      "* Can we assume the input is valid?\n",
      "    * No\n",
 
</s> remove     "* Time: O(n^2) avarage, worst.  O(1) best if input is already sorted.\n",
    "* Space: O(1), stable"
 </s> add     "* Time: O(n^2) avarage, worst.  O(1) best if input is already sorted\n",
    "* Space: O(1) for the iterative solution\n",
    "\n",
    "Misc: \n",
    "\n",
    "* In-place\n",
    "* Stable\n",
    "\n",
    "Insertion sort works well for very small datasets where most of the input is already sorted." </s> remove     "* Is a naiive solution sufficient?\n",
 </s> add     "* Is a naive solution sufficient?\n",
    "* Is a naive solution sufficient?\n",
     "metadata": {},
     "source": [
      "## Constraints\n",
      "\n",
    "* Is a naive solution sufficient?\n",
      "    * Yes\n",
      "* Are duplicates allowed?\n",
      "    * Yes\n",
      "* Can we assume the input is valid?\n",
      "    * No\n",
keep keep keep keep replace keep keep keep keep keep
 Update insertion sort challenge (#137)

Update constraints and algorithm. 
sorting_searching/insertion_sort/insertion_sort_challenge.ipynb