我试图找到下面算法的最坏情况复杂性。算法找到位置LOC1 pf是最大元素,并且在数组DATA中找到第二大元素的位置LOC2,其中n> 1。 1个元素。我将复杂性作为执行算法期间的比较次数,
FIND(DATA, N, LOC1, LOC2)
1. Set FIRST = DATA[1], SECOND = DATA[2], LOC = 1, LOC2 = 2.
2. IF FIRST < SECOND then:
a. Interchange FIRST and SECOND.
b. Set LOC1 = 2 and LOC2 = 1.
[End of If structure.]
3. Repeat for K= 3 to N:
If FIRST < DATA[K], then:
a. Set SECOND = FIRST and FIRST = DATA[k].
b. Set LOC2 = LOC1 and LOC2 = K.
Else if SECOND < DATA[K], then:
Set SECOND = DATA[K] and LOC2 = K.
[End of loop.]
4. Return
我无法弄清楚如何找到上述程序的复杂性,因为比较次数将取决于数组中元素的排列方式。对于最坏的情况,将SECOND元素与DATA [K]进行比较的else条件也应执行最多次数。但是根据DATA数组的元素,可能会出现很多情况。
感谢名单,
此致
tek3
答案 0 :(得分:1)
最糟糕的情况是第3步总是对所有n-2次迭代执行两次比较。因此,步骤2进行了一次比较,步骤3进行了2 *(n-2)次比较。