If (i1>i2)


If (i1>i2) Or (j1>j2) Then Exit; l:=(i1+i2) div 2; m:=(j1+j2) div 2; p:=p+1; {p - счетчик числа сравнений, начальное значение нуль при каждом новом поиске, глобальная переменная } If A[l,m]=X Then Begin { элемент X найден} pp:=true End Else Begin If X>A[l,m] Then Begin{ поиск в 3-й части} Poick(l+1,m,i2,j2); Poick(l,m+1,l,j2) End Else Begin { поиск в 1-й части} Poick(l,j1,l,m-1); Poick(i1,j1,l-1,m) End; { поиск во 2-й части } Poick(l+1,j1,i2,m-1); Poick(i1,m+1,l-1,j2); End; End; Основная программа достаточно очевидна, поэтому приводить ее текст вряд ли целесообразно. Пример исходной матрицы A, результирующей матрицы C и значения ls: A C ls=5.88 1 2 3 4 5 4 3 6 9 12 6 7 8 9 10 5 4 5 10 11 11 12 13 14 15 2 3 1 5 7 16 17 18 19 20 9 11 3 2 4 21 22 23 24 25 9 10 5 3 4 Для этой же матрицы A значение ls можно уменьшить за счет некоторой модификации процедуры Poick. Попробуйте. о94_2 Суть решения. If длина(Y)<длина(X) Then <Поменять значения
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz