��������

�����, ���������������, ��� ��������, � �������� �������� ��� ������ � �������. �� ������ � ������������ ����, ��� ��� �������� ����������� ��� ������ ���������� ��������� � ��������� � (����������) ��������. ��������������, ��� � ������ ���������, ������ ���������� �������������� ��� �����, ����������� ��� ����, �������� �������� � ������������ ��� �������� ������� � ������ ��������. �������, ��� ����� �������� � ���, ��� ���� ����� ���� ������ �������������� ����� ��������.

�������

�� ���.1.1 ������� ������ �� ���� ��������� � ��������� ����������. ����� ����� � ��� ������ ��� �����, �� ����� ������������ �������� ����� � ��� �������� �������� �� ���. 1.2. ������������ ����� ��������� ��� ����� ������ � 7; ��� ����������� � ������, ����� ������ ��� �������� ��������� � �������� A[6].


���. 1.1: ������

int function SequentialSearch (Array A, int Lb, int Ub, int Key);
  begin
  for i = Lb to Ub do
    if A(i) = Key then
      return i;
    return -1;
  end;

���. 1.2: �������� �����

���� ��������, ��� ������ �������������, ����� ��������� �������� ����� (���. 1.3). ���������� LbUb ��������, ��������������, ����������� ������� ������� �������, ��� ��������� ������ ��� �������. �� �������� ������ � ������������ �������� �������� �������. ���� ������� �������� ������ �������� ��������, �� ��������� � ������ � ������� �������� �������, ��� ��� �������� ������ ������ ��� ������������. ������� �������, ��������� Ub ���������� (M � 1) � �� ��������� �������� �� �������� � ��������� �������. ����� �������, � ���������� ������ �������� �� ����� ������ ������� ������. ���, � ����� �������, ����� ������ �������� ������� ������ � ����� ���� ��� ��������, ����� ������ �������� ����� ���� ���� �������. ����� �������, ���� ����� ������� ����� 6, ��� ���������� ���� ��������, ����� ����� ������ �����.

�������� ����� - ����� ������ �����. ����, ��������, ����� ������� ����� 1023, ����� ������� ��������� ������� �������� �� 511 ���������, � ����� ������ - �� 255. ����� ���������, ��� ��� ������ � ������� �� 1023 ��������� ���������� 10 ���������.

����� ������ ��� ������ ����� ��������� � ������� ��������. � ���������, ������ ����� ������������ ��� ���������� ���� ��������. ��������, ����� �������� ����� 18 � ������ �� ���. 1.1, ��� ����������� �������� �������� A[3]:A[6] ���� - ���� ����� ����� �� ������ �������� ����� 18 � ������� A[3]. ����������� �������� ��������� ��� �������� ���������. ��� ��������� ������������� �������� �������/�������� ���������� ��������� ������.

int function BinarySearch (Array A, int Lb, int Ub, int Key);
  begin
  do forever
    M = (Lb + Ub)/2;
    if (Key < A[M]) then
      Ub = M - 1;
    else if (Key > A[M]) then
      Lb = M + 1;
    else
      return M;
    if (Lb > Ub) then
    return -1;
  end;

���. 1.3: �������� �����

����������� ������

�� ���. 1.4 �� �� �����, ��� � ������, �������� � ���� ���������� ������; ����� "���������" ����� ��������. �����������, ��� XP �������� �����������, ����� 18 ����� �������� � ����� ������ ��������� �������:
X->Next = P->Next;
P->Next = X;
������ ��������� ����� ���������� ��������� � �������. ��������������, ������, ��� ����� �����, ���� �� ����� ��������� ����� �������, �.�. ����� ������� ��������� ������ �������� ��������� P. ���, ��� ������ ������ ����� �������� ����������� �� ��������� ������. ����� �������, ������� � ������� ��������� ��������� ����� �������/�������� �������� �� ���� ���������� ������� ������.


���. 1.4: ����������� ������

������ ������� ����������

��� ������ ������������������ ���������� ����� ������������ ������ �������. ����� ������������� - ������ ��������� ������ �������� �� ���������� ������� � �������� ����� ����������. ������ ������ - ������� ����� ����������. ��������, �� ����� ����������, ��� ����� ������ ���� O(n) (�������� ���: � ������� �� n). ��� ��������, ��� ��� ������� n ����� ������ �� ������ ������, ��� ���������� ���������. ����� ���������� ����������� O(), ����� � ���� �� ������ ����� ����������, � ������ ��� ������ ������, ������ � ��������� �� ����������� ���������. ����� �������, ��������, ��� ��������� ��������� ����� ������� O(n2), ����� � ����, ��� ����� ���������� ������ ������ �� �������, ��� ��������� ���������, ����������� �� ������� ���������� ���������. ����� �������������, ��� ��� �����, ���������� ������� 1.1, ��� ��������� �����, �������������� �������� ����� ��� ���������� ������ �������. �������� ����� O(lg n) ������������� ��������� ���� ��������� ������. �������� �� ��������� 2, lg, ������������� �� 1, ����� n �����������. ��������� - ������ ����� ��������� ��������� ��� ������ � ����� ������� ������. ������ ������� �������, ��� ����� ������ ��� �������� ������ ������ ��� lg n.
n lg n n lg n n1.25 n2
1 0 0 1 1
16 4 64 32 256
256 8 2,048 1,024 65,536
4,096 12 49,152 32,768 16,777,216
65,536 16 1,048,565 1,048,476 4,294,967,296
1,048,476 20 20,969,520 33,554,432 1,099,301,922,576
16,775,616 24 402,614,784 1,073,613,825 281,421,292,179,456

������� 1.1: �������� ����� ���������� �������

���� �������, ��� ����� � ������� 1.1 ������������� �������������, �� ��� ������ � 1048476 ���������� ��������� � �������� ������ O(lg n) ����������� 20 �����������, ��������� � �������� ������ O(n1.25) - ������� 33 ������, ��������� � �������� ������ O(n2) - ����� 12 ����. � ������������� ������ ��� ������� ��������� ��������� ��������������� O-������. ����� ������ ������������ � �������������� ����� ����� � ���������� ������������ �������.

����...

��� �� ������, ���� ������ ������������, �� ������ ��� �������� ����� � ������� ��������� ������. ������, �� �������, ���-�� ������ ������������� ��� ������! � ��������� ������� �� ��������� ������ ������� ���������� �������. �����������, ��� ������ ����������� ���������� ����� � ������� �������� �������������� ��������, ������� ����������� ��������� ����������� ����� � �������, �������� ���������, ������������� ������� �������� �������������� �������.

��������� ������ ��������� ���������� ��������� � ������� ��������, �� ����� � ��� �������������� � ������ �������� ����� �������. ������� ���������, ����������� ���������� ��������� ��� ��� ��������, �� ������� �� � ������� � ��������.