算法分析作业答案

发布 2022-07-03 00:39:28 阅读 9522

6.6、设a[1…n]是一个由n个整数组成的数组,x为一整数。给出一个分治算法,找出x在 a**现的频度,即x在a**现的次数。你的算法的时间复杂度是什么?

输入:整数数组a[1…n],整数x

输出:x在数组a[1…n]**现的频度。

frequence(a,1,h,x)

过程 frequence (a,low,high,x)

1. if high – low = 0

2. if a[low] =x return 1

3. else return 0;

4. end if

5. if high – low > 0

6. mid ← low+high)/2

7. return frequence(a,low,mid,x)+frequence(a,low+1,high,x)

8. end if

t(n)=o(n)

6.16、考虑以下mergesort的修改算法。我们将算法应用到输入数组a[1…n]上并不断递归调用,直到子问题的规模变得相对很小,即m或是小于m。

此时转向insertsor, 并将其运用到小的那部分,因此修改算法的第一个检验条件将变为。

if (high – low + 1 <=m) then insertsort(a[low...high])

在修改算法的运行时间仍不变的前提下,用n来表示m的最大值因是多少?为简单起见,可以假定n是2的幂。

输入:待排序数组a[low,..high]

输出:a[low…high]按非降序排列。

mergesort(a[low…high])

过程 mergesort(a, low,high)

low2. if (high – low + 1 <=m) then insertsort(a,low,high)

3. else

4. mid← (low+high)/2

5. mergesort(a, low, mid)

6. mergesort(a, mid+1, high)

7. merge(a, low, mid, high)

8. end if

9. end if

m<=2log n +1

6.38、解释当输入已按降序排列时算法quicksort的行为,可以假定输入元素是互不相同的。

算法quicksort是这样的:

1、设置两个变量start、end,排序开始的时候:start=1,end=n;

2、以第一个数组元素作为关键数据,赋值给pivot,即 pivot=arry[1];

3、从end开始向前搜索,即由后开始向前搜索(end--)找到第一个小于pivot的值 arry[end],并与arry[start]交换,即swat(arry,start,end);

4、从start开始向后搜索,即由前开始向后搜索(start++)找到第一个大于pivot 的arry[start],与arry[end]交换,即swat(arry,start,end);

5、重复第步,直到 start==end,这个时候arry[start]=arry[end]=pivot, 而pivot的位置就是其在整个数组中正确的位置;

6、通过递归,将问题规模不断分解。将pivot两边分成两个数组继续求新的pivot, 最后解出问题。

但是当输入已按降序排列时,假定输入元素有n个且互不相同。那么第一次执行第5步时,arry[1]和arry[n]交换。然后通过递归,出现arry[2]和arry[n-1]交换arry[3]和arry[n-2]交换。

如果n是偶数,最后一次交换的是arry[n/2]和arry[n/2 +1];如果n是奇数,最后一次交换的是arry[(n-1)/2]和arry[(n+1)/2 ]。

算法设计与分析第四五章作业答案

第四章。4 1证明 归纳法证明定理结论正确。记 d v,w 是由 v到达某一可到达结点 w w v 的最短路径长度。若 d v,w 1,则显然这样的所有 w都将被访问。假设对所有 d v,w r 的结点都可被访问。则当 d v,w r 1时有 设 w是 v中 d v,w r 1的一个结点设 u是从 ...

算法与分析平时作业

1 给定下述二分搜索算法,请判断算法的正确性,指出错误算法的产生原因。a int binarysearch type a,const type x,int l,int r return 1 答 正确。b int binarysearch type a,const type x,int l,int r...

数值分析与算法作业

第七章上机题作业。1 解 由于步长h要改变,故将其设为变量,则编程实现romberg求积算法7.1的程序为 romberg 使用romberg积分算法求积分值。function i,n,err romberg fun,a,b,h,ep fun是被积函数,a,b是积分下 上限,h是步长,ep是误差精度...