Вниз
Скачать: CL | DM;

Скорость :(   Найти похожие ветки 

← →
Легионер   (2004-01-28 17:13) [0]

Как можно увеличить быстроту работы слудющего кода?
type Myarray=array[1..26000]of integer;
Pmyarray=^Myarray;
var a,b:Pmyarray;
x,x1:integer;
i,indexA,indexB,k,count:longint;
begin
new(a);
new(b);
Readln(indexA);
count:=1;
for i:=1 to IndexA do
begin

if i=1 then
begin
readln(a^[1]);
end
else
begin
readln(indexB);
if count>25000 then
begin
if b^[count-25000]<>IndexB then
begin
inc(count);
b^[count-25000]:=IndexB;
end;
end
else
begin
if a^[count]<>IndexB then
begin
inc(count);
a^[count]:=IndexB;
end;
end;
end;
end;
readln(indexB);
for i:=1 to IndexB do
begin
readln(x);
for k:=1 to Count do
begin
if k>25000 then x1:=b^[k-25000]
else x1:=a^[k];
if x+x1>10000 then break;
if X1+x=10000 then
begin
Writeln("YES");
Halt;
end;
end;
end;
Writeln("NO");
dispose(a);
dispose(b);
end.


← →
Sandman25 ©   (2004-01-28 17:15) [1]

Например, вытащить проверку из цикла:

for i:=1 to IndexA do
begin
if i=1 then


← →
Sandman25 ©   (2004-01-28 17:17) [2]

Вместо halt лучше goto на первый dispose.


← →
Sandman25 ©   (2004-01-28 17:20) [3]

Это не та задача, где один массив упорядочен по возрастанию, а другой по убыванию? Если так, то нужно избавляться от вложенного for - заменять его на while.


← →
Легионер   (2004-01-28 20:24) [4]

А разве скорость от этого увеличится?
Поменял все то, что Вы сказали. стало чуть быстрее работать:) Может еще что можно ?


← →
Юрий Зотов ©   (2004-01-28 20:34) [5]

А зачем здесь косвенная адресация? Почему бы не объявить A и B, как сами массивы, а не указатели на них. Тоже должно ускорить.


← →
Легионер   (2004-01-28 21:01) [6]

Не получится, т.к. все это в Паскале!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
3-16125
Witcher
2004-01-15 16:03
2004.02.06
Как сконвертировать базу данных DBF в MDB (Access)?


14-16692
MYSTERYO
2004-01-19 00:46
2004.02.06
Вот ирония судьбы, блин. Во время эпидемии не имел счастья


3-16159
maxon
2004-01-14 14:26
2004.02.06
форматировать datetime


1-16335
DDA
2004-01-25 00:04
2004.02.06
DateToStr(Date) и TimeToStr(time)


3-16153
Boroda Oleg
2004-01-14 16:26
2004.02.06
Обновление БД Interbase через Query автоматически




   Наверх