作者:拍友2502893767 | 来源:互联网 | 2023-01-11 16:44
全是证明题,网易云课堂的题目。1、设a1,a2,…,an为n个不同的数字,如果i<j但是ai>aj,我们称ai和aj是倒置的,冒泡排序交换输入中两个相邻倒置数的位置,直到没
全是证明题,网易云课堂的题目。
1、设a1, a2, …, an为n个不同的数字,如果i
aj, 我们称ai和aj是倒置的,冒泡排序交换输入中两个相邻倒置数的位置,直到没有倒置数为止,从而使得列表排序,假设冒泡排序算法的输入是一个随机序列,等可能地为n个不同数的n!种排列中任意一个,确定使用冒泡排序算法需要纠正倒置数的期望次数。
2、a1, a2, …, an是{1, 2, …, n}的一个随机排列,等可能第位n!中可能排列中的任意一个,当对列表a1, a2, ..., an排序时,元素ai从它当前位置到达排序位置必须一定|ai-i|的距离,求元素必须移动的期望总距离
3、证明:在有n个数的序列中找出最大的数至少需要n-1次比较
4、证明:对于任何只基于比较的查找算法,二分查找是最优的。
5、设计一个对7个元素进行排序的方法,保证其平均比较次数最少,要求证明这个结论
2 个解决方案
1 冒泡排序要进行C(N,2)次比较,每次比较有1/2的概率交换,所以交换操作的期望次数是C(N,2) / 2。
2 下表列出每个元素可能移动的距离:
1 0 1 2 3。。。 n - 1
2 1 0 1 2.。。。 n - 2
。。。
n n - 1 n - 2 0
矩阵里面所有元素加起来再除以n。
3 数学归纳法。假设结论对小于n都成立,则n个数时,前n - 1个数找最大数至少需要n - 2次比较,第n个数要和前n - 1个数的最大数比较1次,所以至少需要n - 1次。
4 首先基于比较的查找算法的下限是lgn。因为二分查找的上限是lgn,所以二分查找是最优的。
5 7个元素排序的决策树模型有7!个叶子结点,所以树高为lg(7!) = 13,也就是说至少要比较13次。
先任取3个排序,用到2次比较。再任取3个排序,用到2次比较。合并排序它们的结果,至多6次比较。最后一个元素用二分插入,至多3次比较。