{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cf48057a",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Calculating Big-O of Code and Analyzing Python List Operations\n",
    "#### CS 66: Introduction to Computer Science II"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdf94b54",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## References for this lecture\n",
    "\n",
    "Problem Solving with Algorithms and Data Structures using Python\n",
    "\n",
    "Sections 3.4-3.6: [https://runestone.academy/ns/books/published/pythonds/AlgorithmAnalysis/toctree.html](https://runestone.academy/ns/books/published/pythonds/AlgorithmAnalysis/toctree.html)\n",
    "\n",
    "Python Documentation on Time Complexity: [https://wiki.python.org/moin/TimeComplexity](https://wiki.python.org/moin/TimeComplexity)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f6ec597",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Review: $T(n)$ analysis\n",
    "\n",
    "Count number of **operations** performed by an algorithm relative to $n$, the **size of the input**\n",
    "\n",
    "E.g., $T(n) = 4n+5$ for this code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "395b71df",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sum_of_n_loop(n):\n",
    "    total = 0  # 1 operation\n",
    "    \n",
    "    #this loop runs n+1 times\n",
    "    for i in range(n+1): #2 operations (compute the next value in the range, then assign to i)\n",
    "        total += i  #2 operations (first add, then assign value to total)\n",
    "\n",
    "        \n",
    "    return total"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c34cc82",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Review from last time\n",
    "\n",
    "You ordered these $T(n)$ functions from slowest to fastest growing\n",
    "\n",
    "$T(n) = 54$\n",
    "\n",
    "$T(n) = 1278540$\n",
    "\n",
    "$T(n) = 148n+12000$\n",
    "\n",
    "$T(n) = 2081n+6$\n",
    "\n",
    "$T(n) = 5n^2+33$\n",
    "\n",
    "$T(n) = 23n^2+10n+8$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9effa102",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "## Takeaways\n",
    "\n",
    "* specific time units are not important\n",
    "* **scaling** is important - how does the run time grow?\n",
    "* only the biggest term is important when $n$ gets big"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5bc30a84",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Big-O: Order of magnitude\n",
    "\n",
    "When looking at running time like $T(n) = 148n+12000$, the 12000 will be a bigger part of the overall number when $n$ is small, but when $n$ gets big, the $148n$ will dominate the 12000 part.\n",
    "\n",
    "So, we don't really care much about the 12000.\n",
    "\n",
    "Similarly, whene $n$ gets big, the 148 will become a lot less significant. \n",
    "\n",
    "__Conclusion:__ When looking at $T(n)$, the specific constants are not very important!\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b81ba8fb",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "### Instead, look at $O($  $)$ - the Big-O\n",
    "\n",
    "$O$ refers to the __order of magnitude__ - it's like $T(n)$, but you get to ignore all of the constants. \n",
    "\n",
    "Big-O is the primary way we measure __computational complexity__.\n",
    "* can be used for measuring _time_ complexity or _space_ (i.e., memory) complexity\n",
    "* unless stated otherwise, assume it's talking about _time complexity_ - describing how the running time of an algorithm grows with larger inputs\n",
    "\n",
    "All of these functions can be described as $O(n)$, also known as _linear_ because they grow linearly with $n$\n",
    "\n",
    "* $T(n) = 148n+12000$\n",
    "\n",
    "* $T(n) = 4n+5$\n",
    "\n",
    "* $T(n) = 2081n+6$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fe73f58",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "These functions are all $O(n^2)$ - also known as _quadratic_\n",
    "\n",
    "* $T(n) = 0.001n^2$\n",
    "* $T(n) = 5n^2+33$\n",
    "* $T(n) = 23n^2+10n+8$\n",
    "\n",
    "Why doesn't $T(n) = 23n^2+10n+8$ have $O(n^2+n)$ \n",
    "* again, when $n$ gets big, the $n^2$ term is what dominates\n",
    "* You only need to include the biggest term."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "01d91830",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "These functions are all $O(1)$ - also known as _constant_\n",
    "\n",
    "* $T(n) = 3$\n",
    "* $T(n) = 1278540$\n",
    "* $T(n) = 54$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cbd43bdb",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Determining Big-O\n",
    "\n",
    "Finding Big-O values is much easier than calculating $T(n)$ because you can ignore all the constants.\n",
    "\n",
    "Here, we can see we have _constant_ * $n$ + _constant_ number of operations, which is just $O(n)$. \n",
    "\n",
    "The only thing that depends on the _size of the input_ is the number of times the loop iterates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "0e4d0f1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sum_of_n_loop(n):\n",
    "    total = 0  # constant number of things\n",
    "    \n",
    "    #this loop runs n + constant number times\n",
    "    for i in range(n+1): #constant number of operations \n",
    "        total += i  #constant number of operations\n",
    "        \n",
    "    return total"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9265ef52",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Common Big-O functions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "794a86b8",
   "metadata": {
    "cell_style": "split",
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "\n",
    "\n",
    "<table class=\"docutils align-default\" id=\"id1\">\n",
    "<colgroup>\n",
    "<col style=\"width: 50%;text-align:center\"/>\n",
    "<col style=\"width: 50%\"/>\n",
    "</colgroup>\n",
    "<thead>\n",
    "<tr class=\"row-odd\"><th class=\"head\"><p><strong>f(n)</strong></p></th>\n",
    "<th class=\"head\"><p><strong>Name</strong></p></th>\n",
    "</tr>\n",
    "</thead>\n",
    "<tbody>\n",
    "<tr class=\"row-even\" style='text-align:center'><td><p><span class=\"math notranslate nohighlight\">\\(1\\)</span></p></td>\n",
    "<td><p>Constant</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td><p><span class=\"math notranslate nohighlight\">\\(\\log n\\)</span></p></td>\n",
    "<td><p>Logarithmic</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td><p><span class=\"math notranslate nohighlight\">\\(n\\)</span></p></td>\n",
    "<td><p>Linear</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td><p><span class=\"math notranslate nohighlight\">\\(n\\log n\\)</span></p></td>\n",
    "<td><p>Log Linear</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td><p><span class=\"math notranslate nohighlight\">\\(n^{2}\\)</span></p></td>\n",
    "<td><p>Quadratic</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td><p><span class=\"math notranslate nohighlight\">\\(n^{3}\\)</span></p></td>\n",
    "<td><p>Cubic</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td><p><span class=\"math notranslate nohighlight\">\\(2^{n}\\)</span></p></td>\n",
    "<td><p>Exponential</p></td>\n",
    "</tr>\n",
    "</tbody>\n",
    "</table>\n",
    "\n"
   ]
  },
  {
   "attachments": {
    "bigoshapes.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "36c53324",
   "metadata": {
    "cell_style": "split"
   },
   "source": [
    "\n",
    "<center>\n",
    "<div>\n",
    "<img src=\"attachment:bigoshapes.png\" width=\"700\"/>\n",
    "</div>\n",
    "</center>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f712c04a",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Group Acitivity Problem 1\n",
    "\n",
    "We calculated the Big-O of this `search_for()` function last time. Review the following with your group:\n",
    "1. What was $n$ for this problem?\n",
    "2. What input causes this algorithm to finish in the fastest amount of time?\n",
    "3. What input causes this algorithm to finish in the slowest amount of time?\n",
    "4. What's a _typical_ input for this function?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "1b462520",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n",
      "True\n",
      "False\n"
     ]
    }
   ],
   "source": [
    "def search_for(item, list_to_search_in):\n",
    "    \"\"\"\n",
    "    item: the item you're supposed to search for\n",
    "    list_to_search_in: the list you're supposed to look through to find item\n",
    "    return: True or False depending on if item is contained in list_to_search_in\n",
    "    \"\"\"\n",
    "    for curr_item in list_to_search_in:\n",
    "        if item == curr_item:\n",
    "            return True\n",
    "    \n",
    "    return False\n",
    "\n",
    "#let's test it on some examples\n",
    "print( search_for(42,[35,66,70,5,42,10,12]) )\n",
    "print( search_for(35,[35,66,70,5,42,10,12]) )\n",
    "print( search_for(12,[35,66,70,5,42,10,12]) )\n",
    "print( search_for(9,[35,66,70,5,42,10,12]) )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa9bfb51",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Best, Average, and Worst Case\n",
    "\n",
    "Different inputs (of the same size) to the same algorithm might result in different running times\n",
    "\n",
    "__Best case__ performance: running time on the input that allows the algorithm to finish the fastest\n",
    "\n",
    "__Worst case__ performance: running time on the input that requires the most time for the algorithm to finish\n",
    "\n",
    "__Average case__ performance: average running time over typical inputs\n",
    "* often it is difficult to determine what the _typical_ inputs are that should be considered\n",
    "\n",
    "Unless otherwise stated, Big-O is assumed to be talking about _worst case performance_.\n",
    "\n",
    "What are the best, worst, and average cases for `search_for()`?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "29aaa28a",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Group Activity Problem 2: Anagram Detection\n",
    "\n",
    "An _anagram_ is a word or phrase that can be formed by rearranging the letters of a different word or phrase.\n",
    "\n",
    "Examples of anagrams include\n",
    "\n",
    "* silent, listen\n",
    "\n",
    "* night, thing\n",
    "\n",
    "* the morse code, here come dots\n",
    "\n",
    "* eleven plus two, twelve plus one"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd2df3fd",
   "metadata": {},
   "source": [
    "__Problem:__ Write a function that will tell you if two strings are anagrams."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27a4c87f",
   "metadata": {},
   "source": [
    "The book provides four different solutions in Section 3.4. Three of them are reproduced below. \n",
    "\n",
    "Each group will be assigned one of these solutions. Do the following as a group.\n",
    "\n",
    "1. Test the code on several inputs of different sizes.\n",
    "2. Instrument the code to measure the time it takes on different-sized inputs.\n",
    "3. Give examples of best, worst, and average case inputs.\n",
    "4. Determine what the Big-O of the algorithm is, and be ready to explain why.\n",
    "\n",
    "If you have time, you can check out what it says in the book, but try to analyze it without looking first!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65c5d191",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Solution 1: Checking off\n",
    "\n",
    "This code works by converting the second string into a list and then search through the list for each character from the first string and replacing it with `None` when found.\n",
    "\n",
    "For example, if given `\"silent\"` and `\"listen\"`, the list would start out as\n",
    "\n",
    "`['l','i','s','t','e','n']`\n",
    "\n",
    "when searching for `'s'`, it becomes `['l','i',None,'t','e','n']`\n",
    "\n",
    "when searching for `'i'`, it becomes `['l',None,None,'t','e','n']`\n",
    "\n",
    "... and so until the list becomes `[None,None,None,None,None,None]`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "af51d272",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "def anagramSolution1(s1,s2):\n",
    "    stillOK = True\n",
    "    if len(s1) != len(s2):\n",
    "        stillOK = False\n",
    "\n",
    "    alist = list(s2)\n",
    "    pos1 = 0\n",
    "\n",
    "    while pos1 < len(s1) and stillOK:\n",
    "        pos2 = 0\n",
    "        found = False\n",
    "        while pos2 < len(alist) and not found:\n",
    "            if s1[pos1] == alist[pos2]:\n",
    "                found = True\n",
    "            else:\n",
    "                pos2 = pos2 + 1\n",
    "\n",
    "        if found:\n",
    "            alist[pos2] = None\n",
    "        else:\n",
    "            stillOK = False\n",
    "\n",
    "        pos1 = pos1 + 1\n",
    "        \n",
    "        #uncomment this if you want to see what the list looks like at each step\n",
    "        #print(alist)\n",
    "\n",
    "    return stillOK\n",
    "\n",
    "print(anagramSolution1('silent','listen'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4da1220a",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Solution 2: Sort and Compare\n",
    "\n",
    "This solution starts by converting both strings to lists and then sorting them. Once in sorted order, it goes through and checks that each corresponding item in the list is the same.\n",
    "\n",
    "For example, if given `\"silent\"` and `\"listen\"`, it would turn them into lists `['s', 'i', 'l', 'e', 'n', 't']` and `['l', 'i', 's', 't', 'e', 'n']`.\n",
    "\n",
    "Then, after sorting each list, we get `['e', 'i', 'l', 'n', 's', 't']` and `['e', 'i', 'l', 'n', 's', 't']`.\n",
    "\n",
    "We then compare `e` to `e`, then `i` to `i`, then `l` to `l` and so on. If we ever find two that don't match, we know it isn't an anagram. If we get to the end and they all match, it is an anagram."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "be615d05",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "def anagramSolution2(s1,s2):\n",
    "    alist1 = list(s1)\n",
    "    alist2 = list(s2)\n",
    "\n",
    "    alist1.sort()\n",
    "    alist2.sort()\n",
    "    \n",
    "    #uncomment these if you want to see the sorted lists\n",
    "    #print(alist1)\n",
    "    #print(alist2)\n",
    "\n",
    "    pos = 0\n",
    "    matches = True\n",
    "\n",
    "    while pos < len(s1) and matches:\n",
    "        if alist1[pos]==alist2[pos]:\n",
    "            pos = pos + 1\n",
    "        else:\n",
    "            matches = False\n",
    "\n",
    "    return matches\n",
    "\n",
    "print(anagramSolution2('silent','listen'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53db1474",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Solution 4: Count and Compare\n",
    "\n",
    "This solution creates a list of letter frequencies for each string. Since there aree 26 letters in the alphabet, the strings will each have 26 entries - the first entry is the number of occurrences of `'a'`, the secondd is the number of occurrences of `'b'`, and so on. \n",
    "\n",
    "We can then loop through these frequency lists and compare them item by item to see if they're the same.\n",
    "\n",
    "For example, given inputs `'elevenplustwo'` and `'twelveplusone'`, you end up with the frequency lists\n",
    "\n",
    "`[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0]`\n",
    "\n",
    "and \n",
    "`[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0]`\n",
    "\n",
    "looping through this list entry by entry will show that they are the same.\n",
    "\n",
    "On the other hand, if given inputs `'granma'` and `'anagram'`, you'd get the frequency lists\n",
    "\n",
    "`[2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]`\n",
    "\n",
    "`[3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]`\n",
    "\n",
    "And you can determine they are not anagrams, because the first list has a 2 in the `a` position while the second one has a `3`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "74ded9dd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "def anagramSolution4(s1,s2):\n",
    "    c1 = [0]*26\n",
    "    c2 = [0]*26\n",
    "\n",
    "    for i in range(len(s1)):\n",
    "        pos = ord(s1[i])-ord('a')\n",
    "        c1[pos] = c1[pos] + 1\n",
    "\n",
    "    for i in range(len(s2)):\n",
    "        pos = ord(s2[i])-ord('a')\n",
    "        c2[pos] = c2[pos] + 1\n",
    "        \n",
    "    #uncomment these if you want to see the word frequency lists\n",
    "    #print(c1) \n",
    "    #print(c2)\n",
    "\n",
    "    j = 0\n",
    "    stillOK = True\n",
    "    while j<26 and stillOK:\n",
    "        if c1[j]==c2[j]:\n",
    "            j = j + 1\n",
    "        else:\n",
    "            stillOK = False\n",
    "\n",
    "    return stillOK\n",
    "\n",
    "print(anagramSolution4('elevenplustwo','twelveplusone'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "58e3410c",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Group Activity Problem 3\n",
    "\n",
    "We're going to run some experiments to see if we can guess what the Big-O of various Python list operations is. \n",
    "\n",
    "* Get the [timing_list_operations.py](../../assets/code/timing_list_operations.py) file.\n",
    " - generates lots of different random lists of different sizes\n",
    " - times the code and plots the running times\n",
    " - as is, will generate 20 different lists each of sizes 100000, 200000, ... , 1000000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4f8a3a6b",
   "metadata": {},
   "outputs": [],
   "source": [
    "list_sizes = range(100000,1000001,100000)\n",
    "results = run_list_op_timing_experiments(list_sizes,20)\n",
    "plot_results(list_sizes,results)\n",
    "display_results(list_sizes,results)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "275473ae",
   "metadata": {},
   "source": [
    "you can change what code is timed by finding this part"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a91bbaf2",
   "metadata": {},
   "outputs": [],
   "source": [
    "        ### BEGIN CODE BEING TIMED\n",
    "\n",
    "        0 in test_list_copy  #testing the built-in search operator\n",
    "        #x = test_list_copy[random_index]  #testing list access\n",
    "        #test_list_copy.sort()\n",
    "        \n",
    "        ### END CODE  BEING TIMED"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9240aec5",
   "metadata": {},
   "source": [
    "What can you conclude about the run time of the `in` operator based on what you see?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f2b53e1e",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Group Activity Problem 4\n",
    "\n",
    "In the above example, you tested the `0 in test_list_copy` operation. Now try the following operations. For each one, try to guess the Big-O from the run time results (you may need to try some bigger $n$ to see some of these clearly).\n",
    "\n",
    "If you see any result like `171.45672101µ`, it means $171.45672101x10^{-6}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "19773189",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = test_list_copy[random_index]  #access a random item in a list - you'll have to generate a random int first\n",
    "test_list_copy.sort() #sort the list\n",
    "test_list_copy.pop()  #remove the last item in the list\n",
    "test_list_copy.pop(0) #remove the first item in the list"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "88a1fdee",
   "metadata": {},
   "source": [
    "Discuss: Are you surprised by any of these results?\n",
    "\n",
    "Once you have an idea of what the Big-O is for these operations, look to see what the textbook authors say it is here: \n",
    "[https://runestone.academy/ns/books/published/pythonds/AlgorithmAnalysis/Lists.html](https://runestone.academy/ns/books/published/pythonds/AlgorithmAnalysis/Lists.html)\n",
    "\n",
    "Or, consult the official Python documentation here: [https://wiki.python.org/moin/TimeComplexity](https://wiki.python.org/moin/TimeComplexity)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f946bca",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## White Board Talk\n",
    "\n",
    "If there's time, we'll draw some pictures on the white board to see how Python lists are stored in memory and how that affects the Big-O of all these operations.\n",
    "\n",
    "Points to note:\n",
    "\n",
    "* Python keeps track of lists in consecutive chunks of computer memory - this data structure is often called an _array_\n",
    "* Consecutive memory locations allow $O(1)$ access to items by index in the list - this is often called _random access_\n",
    "* Python allocates a certain amount of space for the list. If it outgrows that, it will allocate a new, bigger memory space and copy everything over.\n",
    "* The _worst case_ for `append()` happens when it triggers a re-allocation to the bigger memory space, so it is technically $O(n)$. But, this is guaranteed to happen infrequently enough that it's still $O(n)$ to append $n$ items, thus thee __ammortized worst case__ for appending one item is $O(1)$, which is why the textbook says `append()` is $O(1)$. For more information, see [https://wiki.python.org/moin/TimeComplexity](https://wiki.python.org/moin/TimeComplexity)"
   ]
  },
  {
   "attachments": {
    "emptyarray.png": {
     "image/png": "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aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrAwNMxAAAAHGlET1QAAAACAAAAAAAAACkAAAAoAAAAKQAAACkAABy0vOBSdwAAHIBJREFUeAHsXc1yHMWy7rkvABHAViM2x7A59tleCEu8wDU7dhr5CWxewCNe4B77BSR5xw78ApbNzxqbSwSwwfbdYiLgBc6c/LKcUrstHUvqzi/DoS8j7B7NjCpVX1VmffVVdfVsZdbJhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBFARmEuJTcFWhQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBBwBCfHqCEJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIAQSEZAQnwiuihYCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgIV59QAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEAiAhLiE8FV0UJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIAQkxKsPCAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEEhEQEJ8IrgqWggIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhICEePUBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAokISIhPBFdFCwEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBgtxN++fbv76aefug8//LB75513utls1q1Wq0Nk8fO//rWy9w/feunF8PsvfWg/oCx8B9b/7nfffde9++673QcffPDSZ/3vxO9M5f/XX3/tfv/99+7jjz92n/3/wm9c4zP8PMY//MEv6vnee++9hG34wDX8xjU+O6//X375pXv+/Hn30UcfHYt/lB/X8BvX/vunrT/8/Wp+L1ld0bawk9o/yo9r+I1r//3X+f/222/968e1a5b/wDfiJv7e4XVq/yfFzdBv/DyF/59//rl7/scf3cfWl4Y2bK/h52P8o66Imb/97ZL14WHJ7eep/Q9zBMp/Xf9DHU+y09Tf48ZyxKVLl17JEZn+gS8McRM4xjXqM7V/5EPEDvJh5Aj4Cr9xndo/6jqb/Zflw/+Ool+6ht+4xof4+bztj3qi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"
    }
   },
   "cell_type": "markdown",
   "id": "5362421e",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "\n",
    "Here's a blank memory diagram in case I need to draw digitally\n",
    "\n",
    "<div>\n",
    "    <img src=\"attachment:emptyarray.png\" width=\"auto\"/>\n",
    "</div>"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
