Efficiency and Big-O Notation Overview with Python Examples