计算函数的复杂性

时间:2015-12-11 15:28:38

标签: big-o time-complexity

我们编写了一个函数来编写一个从最小到最大排序数组的伪代码。这就是我写的:

Function sorting(list)
;define
index = 0
for i in list.length:
    ;take first element from unsorted part in array
    small = list[0+i]
    ;length of unsorted list
    for n in list.length-i:
        ;runs on all elements in list starting from unsorted part (i)
        if list[n+i] <= small:
            ;if it is smallest, take smallest place
            small = list[n+i]
            ;save it's index
            index = n+i 
    put where the smallest is, the first element in unsorted part
    list[index] = array[i]
    ;put in first place of unsorted the smallest. we actually exchange smallest with first
    array[i] = small
return list

所以对于第一个循环,我做了n次,

N(1 + ....)

但是第二个循环,它总是变小,我不知道如何计算它。

请帮助

Ps,我不需要大o,我知道它是O(n²),我需要复杂的公式

2 个答案:

答案 0 :(得分:1)

它是O(n ^ 2)。

您可能希望学习不同的排序算法,例如commentquicksortmergesortheapsort

答案 1 :(得分:1)

您的近似步数是n +(n-1)+(n-2)+ ... + 1.这相当于n *(n + 1)/ 2.在复杂度方面,它是&#39; s O(n ^ 2),或者自然地说,基本操作的数量与输入大小的平方成正比。