��������
�����, ������� � ��������, ��� ��������, � ��������
�������� ��� ������ � �������. �� ������ � ������������ ����, ��� ��� ��������
����������� ��� ������ ���������� ��������� � ��������� � (����������)
��������. ��������������, ��� � ������ ���������, ������ ���������� ��������������
��� �����, ����������� ��� ����, �������� �������� � ������������
��� �������� ������� � ������ ��������. �������, ��� ����� �������� � ���,
��� ���� ����� ���� ������ �������������� ����� ��������.
�������
�� ���.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). ���������� Lb � Ub ��������, ��������������,
����� � ������ ������� ������� �������, ��� ��������� ������
��� �������. �� �������� ������ � ������������ �������� �������� �������.
���� ������� �������� ������ �������� ��������, �� ��������� � ������ �
������� �������� �������, ��� ��� �������� ������ ������ ��� ������������.
������� �������, ��������� 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 �� �� �����, ��� � ������, �������� � ���� ���������� ������;
����� "���������" ����� ��������. �����������, ��� X � P
�������� �����������, ����� 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-������. ����� ������ ������������ � ��������������
����� ����� � ���������� ������������ �������.
����...
��� �� ������, ���� ������ ������������, �� ������ ��� �������� ����� �
������� ��������� ������. ������, �� �������, ���-�� ������ �������������
��� ������! � ��������� ������� �� ��������� ������ ������� ����������
�������. �����������, ��� ������ ����������� ���������� ����� � �������
�������� �������������� ��������, ������� ����������� ��������� �����������
����� � �������, �������� ���������, ������������� ������� �������� ��������������
�������.
��������� ������ ��������� ���������� ��������� � ������� ��������,
�� ����� � ��� �������������� � ������ �������� ����� �������. �������
���������, ����������� ���������� ��������� ��� ��� ��������, �� �������
�� � ������� � ��������.