Following up on this.  Let's make sure that we're talking about the same thing.


The assertion is that the following:

    fullPath += [...]

where fullPath is a list of strings, exhibits O(n^2) time.  I don't
think this is true.  Semantically, the statement above should be
equivalent to:

   fullPath.append(...)

and so I agree with David: this is not O(n^2), but rather O(n).
Python's standard list implementation in C uses a strategy of
geometric array resizing whenever the capacity has been exceeded.  It
expands the capacity by a multiplicative factor of its current
capacity.  Amortized analysis, a subject in computer science, lets us
discover that the cost spread across many operations will be O(n).

References:

    http://en.wikipedia.org/wiki/Dynamic_array


---

What can be O(n^2) is the related, but not identical scenario where:

   fullPath += ...

where fullPath is an immutable string.  But this scenario is different
than the original one.
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to