spamsink: (Default)
[personal profile] spamsink


РRОСЕDURЕ QUIСКЕRSОRТ(А,J);
СОММЕNТ МАССИВ А[1:J] УПОРЯДОЧИВАЕТСЯ ПО ВОЗРАСТАНИЮ;
VАLUЕ J; АRRАУ А; INТЕGЕR J;
ВЕGIN
  INТЕGЕR I,К,М,Р,Q;RЕАL Т,Х;
  INТЕGЕR АRRАУ LТ,UТ[1:LN(АВS(J)+2)/0.693];
  I:=М:=1;
  N: IF J-I>1 ТНЕN ВЕGIN
    Р:=(I+J)÷2;
    Т:=А[Р];
    А[Р]:=А[I];
    Q:=J;
    FОR К:=I+1 SТЕР 1 UNТIL Q  ВЕGIN
      IF А[К]>Т ТНЕN ВЕGIN
        FОR Q:=Q SТЕР -1 UNТIL К  ВЕGIN
          IF А[Q]<Т ТНЕN ВЕGIN
            Х:=А[К];
            А[К]:=А[Q];
            А[Q]:=Х;
            Q:=Q-1;
             ТО L
          ЕND
        ЕND;
        Q:=К-1;
         ТО S
      ЕND;
    L:ЕND ;
    S:А[I]:=А[Q];
    А[Q]:=Т;
    IF 2×Q>I+J ТНЕN ВЕGIN
      LТ[М]:=I;
      UТ[М]:=Q-1;
      I:=Q+1
    ЕND ЕLSЕ ВЕGIN
      LТ[М]:=Q+1;
      UТ[М]:=J;
      J:=Q-1
    ЕND;
    М:=М+1;
     ТО N
  ЕND ;
  IF I≥J ТНЕN  ТО R;
  IF А[I]>А[J] ТНЕN ВЕGIN
    Х:=А[I];
    А[I]:=А[J];
    А[J]:=Х
  ЕND ;
  R:М:=М-1;
  IF М>0 ТНЕN ВЕGIN
    I:=LТ[М];
    J:=UТ[М];
     ТО N
  ЕND
ЕND QUIСКЕRSОRТ

Date: 2009-11-04 01:13 pm (UTC)
From: [identity profile] reedcat.livejournal.com
Размерность массива UT - это жесть!.. :)

Date: 2009-11-04 01:33 pm (UTC)
From: [identity profile] cartesius.livejournal.com
Это на Паскале?

Date: 2009-11-04 05:13 pm (UTC)
From: [identity profile] ygam.livejournal.com
Я когда-то переводил один алгоритм с Алгола-60 на сиплюсплюс, и только через какое-то время понял, что ошибся с нижней границей массива (1 в Алголе и 0 в сиплюсплюсе).

(как я это понял - интересная история; алгоритм вычислял многомерный интеграл одной функции внутри сферы; я решил проверить, что будет, если в 4хмерном пространстве уменьшить маленький радиус сферы вдвое - интеграл должен уменьшиться приблизительно в 16 раз, но он уменьшился в иное число раз)

Date: 2009-11-06 10:27 am (UTC)
From: [identity profile] reedcat.livejournal.com
real procedure normrand(m,sigma,n);
value m,sigma,n; real m,sigma; integer n;
begin real sum; integer i;
sum:=0;
for i:=1 step 1 until n do sum:=sum+random;
normrand:=m+sigma*sum*sqrt(3/n);
end;

хихикс...
Ну ты напомнил... :)

Date: 2009-11-04 09:49 pm (UTC)
From: [identity profile] syarzhuk.livejournal.com
Мой однокурсник стал доктором наук и преподаёт численные методы; до сих пор большинство программ пишется на Фортране.
На моё недоумение объяснил, что f2c генерирует код так: из фортрановского A(i) = B(i) получается сишное a[i-1] = b[i-1];
переписывать библиотеки заново на C дорого, а фортрановые быстрее

Date: 2009-11-07 01:32 am (UTC)
From: [identity profile] cema.livejournal.com
Кроме того, оптимизирующие (и, что важно распараллеливающие) фазы компилятора куда проще писать для Фортрана, чем C.

Date: 2009-11-05 05:16 am (UTC)
From: [identity profile] http://users.livejournal.com/_navi_/
а пляшущие буквы — это намеренно, или это у меня в консерватории что-то надо поправить?
Page generated Mar. 5th, 2026 07:29 am
Powered by Dreamwidth Studios