首先引入几个基本概念。f代表指定的函数。每一步(step)和每一轮(round)。假设为二重循环,则外层循环一次代表走一轮,而内层循环一次代表走一步。如果是一重循环,则循环一次代表走一步。
以冒泡排序为例,假设冒泡排序为函数f,则表达式即为f(x1,x2,…,xn)。为了更好的理解复杂的情况,我们先理解最简单的情形:
假设只包括单个元素时:
f(x1)=x1
假设元素个数为2个时:
f(x1,x2)={x1,x2x1<=x2x2,x1x1>x2
假设元素个数大于2,则表达式为f(x1,x2,…,xn),那该如何进行处理呢?
为了方便表示,我们将每一步操作表示为sf(step function),每一轮操作表示为rf(round function)。
则每一步表示为:
sf(x1)=x1
sf(x1,x2)={x1,x2x1<=x2x2,x1x1>x2
第一轮表示为
rf(x1,x2,…,xn)=sf(sf(x1,x2)[1],x3)[1]…
第二轮表示为
rf(x1,x2,…,xn−1)
第n轮表示为
rf(x1)=sf(x1)=x1
思考题:对于冒泡排序来说,每一步和每一轮分别都做了什么样的处理呢?
需要注意的是,第一轮表示的是f(x1,x2,…,xn),第二轮表示的是f(x1,x2,…,xn−1)。(该段只是对每一轮做了什么进行提醒)
最后必须通过实例来模拟计算机执行过程。