Stephen19058
Stephen19058

Reputation: 13

How many steps and big-O complexity

def percentBases(dnaStrand):
    cytosine = dnaStrand.count('C')
    guanine= dnaStrand.count('G')
    adenine= dnaStrand.count('A')
    thymine= dnaStrand.count('T')
    
    percentC = round(cytosine/len(dnaStrand)*100,2)
    percentG =  round(guanine/len(dnaStrand)*100,2)
    percentA = round(adenine/len(dnaStrand)*100,2)
    percentT = round(thymine/len(dnaStrand)*100,2)
    
 
    return(percentC, percentG, percentA, percentT)

I have written this simple code and have been asked to record an approximate time complexity using big-O notation. I don't have a clue about big-O notation but after reading I would have a guess at: T(n) = 8 O(8)

Please correct me if I'm wrong and try to explain to me. Thanks

Upvotes: 0

Views: 74

Answers (2)

Bill the Lizard
Bill the Lizard

Reputation: 405745

To understand big-O time complexity of a function, you need to look at what will take more time to compute as the size of the input changes. Your input dnaStrand is a string, and you do two operations count and len that could potentially take more time as the length of the input increases. len for a string is constant (source), but count is linear, since you have to loop over the entire string to count occurrences of different substrings. So, your function is 4*O(n), or just O(n).

Upvotes: 2

umar
umar

Reputation: 551

Your function performs 8 operations and all of them take constant time. So, T(n) = 8

In terms of big-o, you can write it as T(n) = O(1) or O(c)

Upvotes: -1

Related Questions