ВУЗ:
Составители:
Рубрика:
35
2.11.4 Поиск максимального и минимального элемента в списке
Найти максимальный или минимальный элемент в списке можно при
помощи рекурсивных предикатов max_list и min_list. Предикат max_list ищет
максимальный элемент в списке на прямом ходе рекурсии, начиная от
головы списка, при этом первый параметр типа integer является текущим
максимумом, а второй - необходим для возвращения
результата при выходе
из рекурсии. Предикат min_list ищет минимальный элемент в списке на
обратном ходе рекурсии, начиная с последнего элемента, при этом параметр
типа integer является текущим минимумом и результатом одновременно. Два
варианта решения задачи приводятся в примере 26.
Пример 30: поиск максимального т минимального элемента в списке.
domains
list=integer*
predicates
max_list(list, integer, integer)
min_list(list, integer)
clauses
max_list ([],M,M).
max_list ([H|T],N,M):- H>N, max_list(T,H,M).
max_list ([H|T],N,M):- H<=N, max_list(T,N,M).
min_list ([H|[]],H).
min_list ([H|T],M):- min_list(T,M1), H>M1, M=H.
min_list ([H|T],M):- min_list(T,M1), H<=M1, M=M1.
goal
L=[1,5,3,-6,8,-4],L=[H|T],max_list(T,H,Max), min_list([4,3,-8,6],Min).
2.11.5 Сортировка списков
Сортировка представляет собой переупорядочение элементов списка
определенным образом. Назначением сортировки является упрощение
доступа к нужным элементам. Для сортировки списков обычно применяются
три метода:
• метод перестановки,
• метод вставки,
• метод выборки.
Также можно использовать комбинации указанных методов.
Первый метод сортировки заключается в перестановке элементов
списка
до тех пор, пока он не будет упорядочен. Второй метод
осуществляется при помощи неоднократной вставки элементов в список до
тех пор, пока он не будет упорядочен. Третий метод включает в себя
многократную выборку и перемещение элементов списка.
Второй из методов, метод вставки, особенно удобен для реализации на
Прологе.
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »