Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
от таблицы один профит — алгоритм в мой голове «на уровне», или можно лучше?
def recurPowerNew(a, b):
print a, b
if b == 0:
return 1
elif b%2 == 0:
return recurPowerNew(a*a, b/2)
else:
return a * recurPowerNew(a, b-1)
def unionNew(L1, L2):
'''
L1 & L2 are lists of the same length, n
'''
temp = []
for e1 in L1:
flag = False
for e2 in L2:
if e1 == e2:
flag = True
break
if not flag:
temp.append(e1)
return temp + L2
def isIn(a, s):
'''
a is a character, or, singleton string.
s is a string, sorted in alphabetical order.
'''
if len(s) == 0:
return False
elif len(s) == 1:
return a == s
else:
test = s[len(s)/2]
if test == a:
return True
elif a < test:
return isIn(a, s[:len(s)/2])
else:
return isIn(a, s[len(s)/2+1:])
Очевидно же, что ваше и моё определение O(..) совпадают!
O:
о:
O существует такой коэффициент С, что выполняется условие, то в случае о оно выполняется для любого С.… f(x) < C*g(x) в некоторой области ....
Математическое значение записи «f(x)=O(g(x)) при x->a» представляет собой «существует конечный предел отношения f(x)/g(x) при x->a».
математическое обозначение f(x)=O(g(x)) обозначает, что f(x) < C*g(x) в некоторой области, где C — некоторая константа
Обосную недовольство: в принципе эта табличка приведет только к тому, что заучившие ее люди будут вместо первичного собеседования отсеиваться на последующих.
не понятно почему рассматривается только вставка в начало, достаточно редкая операция, обычно или вставка в общем случае или добавление в конец, а у них временная сложность другая.
В случае быстрой сортировки у нас идут рекурсивные вызовы. В худшем случае, их глубина будет равна двоичному логарифму длины массива, а каждый вызов захватывает на стеке свой набор переменных. Так что общий размер дополнительной памяти — O(log(N)).
void qsort(T *arr,int len){
while(len>1){
int medIndex=split(arr,len);
if(2*medIndex>=len){
qsort(arr+(medIndex+1),len-(medIndex+1));
len=medIndex;
}else{
qsort(arr,medIndex);
arr+=(medIndex+1);
len-=(medIndex+1);
}
}
}
We can draw an analogy between the asymptotic comparison of two functions f and g and the comparison of two real numbers a and b:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein — Introduction to Algorithms, Third Edition
2*n^2 = o(n^2) < — корректнаяЭто с точностью до наоборот, первое — некорректное, второе — корректное.
2*n = o(n^2) < — некорректная
Знай сложности алгоритмов