查找以下算法的最坏情况复杂性

时间:2013-04-03 18:12:40

标签: algorithm data-structures complexity-theory

我试图找到下面算法的最坏情况复杂性。算法找到位置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

1 个答案:

答案 0 :(得分:1)

最糟糕的情况是第3步总是对所有n-2次迭代执行两次比较。因此,步骤2进行了一次比较,步骤3进行了2 *(n-2)次比较。