| 发表于:2007-10-16 16:42:02 楼主 |
4-6 给定一个表示n 张扑克牌的数组a[1…n] ,其中n 张扑克牌的编号为1, 2,…,n ,分别 设计一个迭代和递归的算法完成下列问题a ~ c,并分析算法的时间复杂性。 (a)洗牌。 例如 数组a[1…8] = [1, 2,3, 4,5,6,7,8],执行问题(a)算法后,数组a[1…8] = [5,1,6,2,7,3,8,4]。 (b)计算执行问题(a)算法的最少次数,使得数组中每位元素与初始时相同。 例如 [1,2,3,4,5,6,7,8] → [5,1,6,2,7,3,8,4] → [7,5,3,1,8,6,4,2] → [8,7,6,5,4,3,2,1] → [4,8,3,7,2,6,1,5] → [2,4,6,8,1,3,5,7] → [1,2,3,4,5,6,7,8],最少6 次与初始时相同。 (c)假设初始时数组中的元素是无序的,计算执行问题(a)算法的最少次数,使得数组 中每位元素与初始时相同。 例如 [1,4,2,3] → [2,1,3,4] → [3,2,4,1] → [4,3,1,2] → [1, 4, 2,3] ,最少4 次 与初始时相同。 |
|
|
|
|