以下算法是否具有O(nlogn)的复杂度?
令我困惑的是这个算法分为两次,而不是一次作为常规的O(nlogn)算法,并且每次它都进行O(n)工作.
def equivalent(a, b):
if isEqual(a, b):
return True
half = int(len(a) / 2)
if 2*half != len(a):
return False
if (equivalent(a[:half], b[:half]) and equivalent(a[half:], b[half:])):
return True
if (equivalent(a[:half], b[half:]) and equivalent(a[half:], b[:half])):
return True
return False
Run Code Online (Sandbox Code Playgroud) 这是我解决方程系统的代码.
我的代码有问题,但我无法修复它.
D=1
E=2
F=3
syms a b c;
S= solve('a+b-c=D','2*+b-3*c=E','a-2*b=F')
S = [S.a S.b S.c]
Run Code Online (Sandbox Code Playgroud) 我在Octave中使用log2函数来计算简单数组的log2值.
>> x = [1:5]
x =
1 2 3 4 5
>> log2(x)
error: invalid use of script D:\All_Data\my_data\backup3\backup3\tech\DSP\log2.m in index expression
Run Code Online (Sandbox Code Playgroud)
我不确定为什么Octave在这种情况下躲避错误......
我刚刚在网上找到了这段代码,它可以计算2个数字的最大公约数.它是如何工作的?
int gcd(int a, int b){
while(b) b ^= a ^= b ^= a %= b;
return a;
}
Run Code Online (Sandbox Code Playgroud)