Optimization 优化、时间复杂度和流程图(Scilab)

Optimization 优化、时间复杂度和流程图(Scilab),optimization,time-complexity,shortcode,scilab,flowchart,Optimization,Time Complexity,Shortcode,Scilab,Flowchart,我试图优化这段代码,但再优化也不可能了 请帮助构建此算法的流程图 A = [-1,0,1,2,3,5,6,8,10,13,19,23,45]; B = [0,1,3,6,7,8,9,12,45]; N1 = length(A); N2 = length(B); t = 1; m = 10; C = []; for i=1:N1 for j=1:N2 if A(i)==B(j) break else if j

我试图优化这段代码,但再优化也不可能了

请帮助构建此算法的流程图

A = [-1,0,1,2,3,5,6,8,10,13,19,23,45];
B = [0,1,3,6,7,8,9,12,45];
N1 = length(A);
N2 = length(B);
t = 1;
m = 10;
C = [];
for i=1:N1
    for j=1:N2 
        if A(i)==B(j)
            break
        else
            if j==N2
               C(t)=A(i);
               t=t+1;
           end
       end
   end
end
disp(C);
N3=length(C);
R = [];
y = 1;
for l=1:N3
    if C(l)>m
       R(y)=C(l);
       y=y+1;
   end 
end
disp(R);
如何求算法的时间复杂度

我想应该是O(n)

主要(基本)操作: 比较A(i)=B(j)
但我还不确定

我做不到

复杂度函数(最坏情况)

最糟糕的计算复杂性:
这好像是家庭作业;p

至于时间复杂度,它看起来更像是
O(n²)
,因为在另一个for循环中有一个for循环。 我最近开始看这门关于Udemy上的算法和数据结构的课程,我强烈推荐这门课程。他很好地解释了BigO符号:) 当然。(与作者无关)

“优化”取决于您的目标,例如,您可能希望最小化浮点运算的数量或最小化Scilab指令的数量或最小化算法的执行时间

A = [-1,0,1,2,3,5,6,8,10,13,19,23,45];
B = [0,1,3,6,7,8,9,12,45];
N1 = length(A);
N2 = length(B);
t = 1;
m = 10;
C = [];
for i=1:N1
    for j=1:N2 
        if A(i)==B(j)
            break
        else
            if j==N2
               C(t)=A(i);
               t=t+1;
           end
       end
   end
end
disp(C);
N3=length(C);
R = [];
y = 1;
for l=1:N3
    if C(l)>m
       R(y)=C(l);
       y=y+1;
   end 
end
disp(R);
由于Scilab是一种智能语言,因此可以通过矢量化减少执行时间和代码长度

例如,您的代码

N3=length(C);
R = [];
y = 1;
for l=1:N3
    if C(l)>m
       R(y)=C(l);
       y=y+1;
     end 
end
可改写为:

R=C(C>m)
在这里,计算机操作的数量与原始代码大致相同,但执行时间要快很多倍:

设C=兰特(11000);m=0.5


就优化而言,你应该考虑Scilab(以及它的数学编程语言Matlab和OcTAVE)本质上是矢量化的。这意味着,如果您对循环使用了太多的
,您可能应该回去阅读一些文档和教程。您编写的代码的规范版本可以实现为:

A = [-1, 0, 1, 2, 3, 5, 6, 8, 10, 13, 19, 23, 45];
B = [0, 1, 3, 6, 7, 8, 9, 12, 45];

C = setdiff(A, B);
disp(C);

m = 10;
R = C(C > m);
disp(R);
结果:

-一,。2.5.101319二十三,

  • 二十三,

  • 可悲的是,这里的大多数Scilab问题的格式都很差,而且肯定是家庭作业!