Hej

Chciałbym przełożyć set_difference na SCILABA w taki sposób by pasował do zadania, które dodałem niżej. Z tego też powodu nie tworzy on nam ostatecznie tablicy, a zlicza on ilość jej wszystkich elementów i tych, które są większe od zadanej liczby.
Ważne jest, aby finalny algorytm miał złożoność liniową.

Treść zadania:

1.png

Oto co udało mi się zrobić, ale mam wątpliwości o to czy jest tu złożoność liniowa. Wiem, że dobrze przełożony set_difference powinien taką mieć.


N=input("Podaj ilu elementowa ma byc pierwsza tablica: ")
T1 = int(0.5+10*rand(1,N))
T1=gsort(T1,'g','i')

M=input("Podaj ilu elementowa ma byc druga tablica: ")
T2 = int(0.5+10*rand(1,M))
T2=gsort(T2,'g','i')

//do tego miejsca jest wejście które na szybko zrobiłem. Możliwe że się zmieni.

j=1 //wskaźnik T2
i=1 //wskaźnik T1
le=0  //liczba elementów
lez=0  //liczba elementów większych od zadanej liczby

while i<=N do 
    if T1(i) < T2(j) then
        le=le+1
        if T1(i)>Z then
            lez=lez+1
        end
        i=i+1
    else
        if T2(j) < T1(i) then
            j=j+1
        else
            i=i+1
            j=j+1
        end
     if j>M then
         for q=i:N 
             if T1(q)>Z
                lez=lez+1
             end
             le=le+1
          end
          break
      end
   end
end

disp(T1)
disp(T2)
disp(le)
disp(lez)

W załączniku dodaję plik zip w którym jest sce. z tym co zdołałem napisać.
Dodatkowo link do screena z programu: zdj.png

Byłbym bardzo wdzięczny za wszelkie sugestie i poprawki :D