list - Is a.insert(0,x) an o(n) function? Is a.append an O(1) function? Python -
i trying move numbers in array front , odd numbers of array. problem asks in linear algorithm , in place.
i came this:
def sort(a): in range(0,len(a)-1): if a[i]%2==0: a.insert(0,a.pop(i)) return
the issue that, told me technically, a.insert o(n) function technically considered non-linear algorithm (when including for in range
part of function). since forum asked question couple months old, couldn't ask explanation.
basically believe said "technically" because since inserts @ front, not check n number of elements in array, therefore making run practical purposes @ o(n) , not o(n^2). correct assessment?
also, on forum used a.append
modify above , changed odd numbers. no 1 replied wondering, a.append not o(n) function since moves end? o(1)?
thanks explanations , clarifications!
insert
@ 0th index of list requires shifting every other element along makes o(n) operation. however, if use deque
operation o(1).
append
amortized o(1) operation since requires adding item on end of list , no shifting done. list needs grow not o(1) operation.
Comments
Post a Comment