{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyzing the running time of algorithms\n", "\n", "We'll use sorting algorithms to demonstrate the need to carefully consider algorithm running time.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 5, 53]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def bubble_sort(array) :\n", " for passes in range(len(array)-1, 0, -1):\n", " for i in range(passes):\n", " if array[i]>array[i+1]:\n", " array[i],array[i+1] = array[i+1],array[i]\n", " return array\n", "bubble_sort([53,2,1,3,5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the built in %timeit magic function in jupyter to compare the execution time of Python code." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 loop, best of 1: 589 µs per loop\n" ] } ], "source": [ "import random\n", "array = list(range(2000))\n", "random.shuffle(array)\n", "%timeit -n 1 -r 1 array.sort()\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 loop, best of 3: 176 ms per loop\n" ] } ], "source": [ "array = list(range(2000))\n", "random.shuffle(array)\n", "%timeit bubble_sort(array)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Clearly Python's sort method is faster than bubble sort. But how does timing vary with the size of the array?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,0,'problem size')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "