第第55章归纳法章归纳法5
2两个简单的例子5
1选择排序5
2插入排序5
3基数排序5
5多项式求值(HornerHorner规则)规则)5
6生成排列5
1第一种算法5
2第二种算法(略)第二种算法(略)5
7寻找多数元素寻找多数元素5
1引引言言考虑一个带有参数考虑一个带有参数nn的问题,在问题的实例的问题,在问题的实例中中nn通常表示事物的数目
通常表示事物的数目
当我们寻找这类问题解时,可从求解一个当我们寻找这类问题解时,可从求解一个带有小一点参数的相同问题开始,例如参数为带有小一点参数的相同问题开始,例如参数为n-n-11,,n/2n/2等
然后再把解推广到包含等
然后再把解推广到包含nn个物体的个物体的实例
这样,问题的解决就比较容易,这种方法实例
这样,问题的解决就比较容易,这种方法是基于众所周知的数学归纳法
是基于众所周知的数学归纳法
在本章的算法中,递归调用仅书写一次,这在本章的算法中,递归调用仅书写一次,这样的递归称为尾递归
在大多数情况下,尾递归样的递归称为尾递归
在大多数情况下,尾递归可以方便地转换为非递归过程(迭代过程)
可以方便地转换为非递归过程(迭代过程)
2二个简单的例子二个简单的例子5
1选择排序法选择排序法对数组对数组A[1
n]中中nn个元素的排序,可视为在个元素的排序,可视为在nn个元素中选择一个元素中选择一个最小的数,将其和个最小的数,将其和A[1]A[1]交换,然后对交换,然后对A[2
n]中中n-1n-1个元素排个元素排序
Selection(1)Selection(1)//A[1
n]//A[1
n]SelectionSortRec(2)SelectionSortRec(2)//A[2
n]//A[