М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Karina3589
Karina3589
17.06.2021 22:38 •  Математика

Алгоритм поиска в дереве сортировки.

👇
Ответ:
8orzakt
8orzakt
17.06.2021

Вход: упорядоченный массив А : array [l..n] of record k: key;i: info end record; ключ a: key.

Выход: индекс записи с искомым ключом а в массиве А или 0, если записи с таким ключом нет.

b: = 1 { начальный индекс части массива для поиска }

е: = n { конечный индекс части массива для поиска }

while b  e do

с: =(b + е)/2 { индекс проверяемого элемента (округленный до целого) }

if A[c].k > a then

е:=с—1 { продолжаем поиск в первой половине }

else if A[c].k < a then

b: = с + 1 { продолжаем поиск во второй половине }

else

return с { нашли искомый ключ }

end if

end while

return 0 { искомого ключа нет в массиве }

обоснование

Для обоснования этого алгоритма достаточно заметить, что на каждом шаге основного цикла искомый элемент массива (если он есть) находится между (включительно) элементами с индексами b и е. Поскольку диапазон поиска на каждом шаге уменьшается вдвое, общая трудоемкость не превосходит log2 n. 

9.4.4. Алгоритм поиска в дереве сортировки

Следующий алгоритм находит в дереве сортировки узел с указанным ключом, если он там есть.

Алгоритм 9.3. Поиск узла в дереве сортировки

Вход: дерево сортировки Т, заданное указателем на корень; ключ а.

Выход: указатель р на найденный узел или nil, если в дереве нет такого ключа.

р: = Т { указатель на проверяемый узел }

while р  nil do

if a < p.i then

p:=p.l { продолжаем поиск слева }

else if a > p.i then

p : = p.r { продолжаем поиск справа }

else

return р { нашли узел }

end if

end while

обоснование

Этот алгоритм работает в точном соответствии с определением дерева сорти­ровки: если текущий узел не искомый, то в зависимости от того, меньше или больше искомый ключ по сравнению с текущим, нужно продолжать поиск слева или справа, соответственно.

9.4.5. Алгоритм вставки в дерево сортировки

Следующий алгоритм вставляет в дерево сортировки узел с указанным ключом. Если узел с указанным ключом уже есть в дереве, то ничего не делается. Вспо­могательная функция NewNode описана в подразделе 9.4.7.

Алгоритм 9.4. Вставка узла в дерево сортировки

Вход: дерево сортировки Т, заданное указателем на корень; ключ а.

Выход: модифицированное дерево сортировки Т.

if T = nil then

Т: = NewNode(o) { первый узел в дереве }

return Т

end if

p: = Т { указатель на текущий узел }

while true do

if a < p.i then

if p.l = nil then

q: = NewNode(a) { создаем новый узел }

p.l: = q { и подцепляем его к р слева }

return Т

else

p:=p.l { продолжаем поиск места для вставки слева }

end if

end if

if a > p.i then

if p.i = nil then

q : = NewNode(a) { создаем новый узел }

p.r:=q { и подцепляем его к р справа }

return Т

else

р: = р.г { продолжаем поиск места для вставки справа }

end if

end if

return Т { сюда попали, если уже есть такой ключ! }

end while

обоснование

Алгоритм вставки, в сущности, аналогичен алгоритму поиска: в дереве ищется такой узел, имеющий свободную связь для подцепления нового узла, чтобы не нарушалось условие дерева сортировки. А именно, если новый ключ меньше текущего, то либо его можно подцепить слева (если левая связь свободна), либо нужно найти слева подходящее место. Аналогично, если новый ключ больше текущего. 

4,7(58 оценок)
Открыть все ответы
Ответ:
Ruslan224453
Ruslan224453
17.06.2021
1)
Для того что бы записать все делители числа, нужно разложить данное число на множители и рассмотреть все возможные варианты разложения.
35=5 \cdot7 
52=2\cdot 26=2\cdot 2\cdot 13=4\cdot 13

Так же не забываем что число делится всегда на само себя и на единицу. 
Следовательно, число 35 делится на числа:
1,5,7,35

А число 52 делится на числа:
1,2,4,13,26,52

2)
1. Число кратное 3, имеет вид: 3n - где n число. Подставим к примеру три натуральных числа вместо n. И получим нужные нам числа:
       3\cdot 1=3\\3\cdot 2= 6\\3\cdot 3=9
   
2. Число кратное 11, имеет вид: 11m - где m число. Подставим к примеру три натуральных числа вместо m. И получим  нужные нам числа:
        11\cdot 10=110\\11\cdot 11=121\\11\cdot 4=44
4,7(8 оценок)
Ответ:
urspacce
urspacce
17.06.2021
Задача: После обеда Слава гулял 2 часа, делал уроки 1 час, а потом до самого ужина рисовал 3 часа. В котором часу Слава ужинал, если обедал он в 2 часа?
Условия:
гулял - 2 ч.
делала уроки - 1 ч.
рисовал - 3 ч.
Обед - 14:00
Найти:
Ужин - ?
Решение
Слава обедал: 14:00 (2 часа дня).
Гулял 2 часа, то есть до: 14:00 + 2 = 16:00 (2+2=4 часа).
Делал уроки 1 час, то есть до: 16:00+1=17:00 (4+1=5 часов вечера)
Рисовал до ужина 3 часа, то есть до: 17:00 +3 = 20:00 (5+3=8 часов вечера).
ОТВЕТ: Слава ужинал в 20:00 (8 часов).
4,4(85 оценок)
Это интересно:
Новые ответы от MOGZ: Математика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ