abstract machine algorithm algorithmic efficiency arithmetic progression asymptotic analysis big o notation clifford stein collation computational complexity theory computer computer file computer program constant dspace dtime donald knuth elegance empirical exponential growth factorization growth rate implementation input insertion sort introduction to algorithms iteration kilobyte linear linear search logarithm mathematical induction metrics model of computation operating system performance analysis polynomial time problem size programming language pseudocode quadratic growth quantum computer quicksort the art of computer programming turing machine units of measurement