📅  最后修改于: 2020-12-10 03:53:44             🧑  作者: Mango
问题:分析算法以从数组中找到最大和最小元素。
方法1:如果将通用方法应用于大小为n的数组,则需要的比较次数为2n-2。
方法2:在另一种方法中,我们将问题分为子问题,并找到每个组的最大值和最小值,即现在的最大值。每个组中的一个将与另一个组中的唯一最大值进行比较,而最小与最小值进行比较。
令n =是数组中项目的大小
令T(n)=将算法应用于大小为n的数组所需的时间。在这里,我们将项划分为T(n / 2)。
如上例所示,此处的图2倾向于将最小值与最小值进行比较,将最大值与最大值进行比较。
T(n)= 2 T →等式(i)
T(2)= 1,比较两个元素/项目所需的时间。 (时间以比较次数为单位)
→式(ii)
将等式(ii)放入等式(i)
同样,对每个子问题或解剖结构递归应用相同的过程
{使用递归方法,我们将使用一些停止条件来停止算法}
递归将停止,当 →(式4)
将等式4放入等式3。
比较次数需要对n个元素/项目应用除法和征服算法=
比较次数需要对n个元素应用一般方法=(n-1)+(n-1)= 2n-2
从这个例子中,我们可以分析出如何通过使用这种技术来减少比较次数。
分析:假设我们有8个元素大小的数组。
方法1:需要比较(2n-2),(2×8)-2 = 14
方法2:要求
很明显;我们可以使用适当的技术来减少比较次数(复杂度)。