一种算法将大小为n的问题分解为每个大小为n/b的b个子问题,其中b是整数。分解的代价是n,C(1)= 1。使用重复替换显示,对于2≥b的所有值,算法的复杂度为O(n lg n)。 (n)= C(n/b)+ n 并且在用k个步骤代替我之后得到C(n)= C(n/b^k)+ N [求和(从i = 0到k-1)的(1/b)^ I] K =日志(基极b)N 我不知道我得到所有这对,因为当我完成这个任务时,
如果在函数中只有一个递归调用,我可以很容易地理解递归。但是,当我在同一个函数中看到两个或多个递归调用时,我真的感到困惑。例如: int MaximumElement(int array[], int index, int n)
{
int maxval1, maxval2;
if (n==1) return array[index];
maxval1
我试图实现快速排序。但控制似乎永远不会退出快速排序功能。任何帮助将非常感激。 几个要点: 我使用的第一个元素作为支点。我知道有更好更高效的技术来选择关键点,但这不是关于这一点。 2.分区函数中的'k'变量是pivot元素。 据我所知,问题与分区功能,因为我已经尝试调试它不同的时间。 此外,这不是一个家庭作业问题。我试图在自己学习之后实现算法。 #include<iostream>
using n