как указать бесконечность в качестве дозорной карты в mergeSort? - PullRequest
0 голосов
/ 28 апреля 2019

Я читаю введение в алгоритмы, есть термин «сторожевая карта», который использует ∞ в качестве значения сторожа на P31.Я знаю, что это означает массив в конце (и для строк, можно использовать указатель NULL, указывающий в конце строки).Но я не знаю, как именно реализовать в программировании на C.

Предположим, что массив int A [6] имеет случайное значение, которое должно включать -2147483648 (INT_MIN), 0 и 2147483647 (INT_MAX).

INT_MIN и INT_MAX в /usr/include/limits.h на платформе Linux.

Например:

int A[6] = {100,0,-2147483648, -100, 2147483646 ,2147483647};

как указать ∞ в качестве значения часового вc программирование в следующем псевдокоде (строки 8 и 9)?

MERGE (A ,p ,q, r)
 1    n1 = q - p + 1
 2    n2 = r - q
 3    let L[1..n1 + 1] and R[1..n2 + 1] be new arrays
 4    for i = 1 to n1
 5        L[i] = A[p + i - 1]
 6    for j = 1 to n2
 7        R[j] = A[q + j]
 8    L[n1 + 1] =  ∞
 9    R[n2 + 1] =  ∞
10    i = 1
11    j = 1
12    for k = p to r
13        if L[i] <= R[j]
14            A[k] = L[i]
15            i = i + 1
16        else A[k] = R[j]
17            j = j + 1

1 Ответ

0 голосов
/ 01 мая 2019

Одним из ответов будет то, что ∞ - это число, которое больше, чем ваши массивы Макс. На 1, и -∞ - это число, которое меньше, чем ваши массивы, минимум на 1. И вы можете каждый раз проверять перед вызовом MERGEдля чего эти значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...