Раздел «Алгоритмы».QSortBinarySearchPAS:

Быстрая сортировка и двоичный поиск на Pascal

//(C) Igor Kvasov
{быстрая сортировка и двоичный поиск
в случае нескольких равных элементов поиск выдает наименьший номер
в случае отсутствия - номер первого элемента, превышающего искомый}
const
  maxn = 100000;
Type
  DataType = extended;
var
  i,n:longint;
  buf,X:DataType;
  a:array[1..maxn]of DataType;

procedure Sort(L,R:Longint);
var
  j:longint;

begin
  i:=L; j:=R; X:=a[(i+j)shr 1];
  repeat
    while a[i]<X do inc(i);
    while a[j]>X do dec(j);
    if i<=j then begin
      buf:=a[i]; a[i]:=a[j]; a[j]:=buf;
      inc(i); dec(j);
    end;
  until i>j;
  if i<R then Sort(i,R);
  if j>L then Sort(L,j);
end;

function BinarySearch(x:dataType):longint;
var
  l,r,m:longint;
begin
  l:=1; r:=n;
  while r>l do begin
    m:=(r+l) div 2;
    if a[m]<x then l:=m+1 else r:=m;
  end;
  BinarySearch:=l;
end;

begin
end.

-- IgorKvasov? - 28 Dec 2004

AlgorithmClasifyForm
Type: Код
Scope: Математика
Strategy:  
Complexity: Low