Содержание
- 2. Массивы Строки Записи и таблицы Множества Динамические массивы Постановка задачи поиска элемента в массиве Алгоритмы поиска:
- 3. Рассмотрим статические структуры данных: массивы, записи, множества. Цель описания типа данных и определения некоторых переменных, относящихся
- 4. 1. Массивы
- 5. Массив – это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющих положение элемента в массиве. Следующее
- 6. Количество используемых индексов определяет размерность массива. Массив может быть одномерным (вектор), двумерным (матрица), трехмерным (куб) и
- 7. В Паскале определены такие операции над массивами в целом, как сравнение на равенство и неравенство массивов,
- 8. Можно также выполнять операции над отдельными элементами массива. Перечень таких операций определяется типом элементов. Доступ к
- 9. 2. Строки
- 10. Строка – это последовательность символов (элементов символьного типа). В Паскале количество символов в строке (длина строки)
- 11. Каждый символ строки имеет свой индекс, принимающий значение от 1 до заданной длины строки. Следует обратить
- 12. Однако есть ряд отличий: операций сравнения строк больше, чем аналогичных операций для массивов: , >, ;
- 13. 3. Записи и таблицы
- 14. Запись – это агрегат, составляющие которого (поля) имеют имя и могут быть различного типа. Рассмотрим пример
- 15. В Паскале определена операция присваивания для записей в целом (записи должны быть одного типа). Доступ к
- 16. Таблица представляет собой одномерный массив (вектор), элементами которого являются записи. Отдельная запись массива называется строкой таблицы.
- 17. Характерной особенностью таблиц является то, что доступ к элементам таблицы производится не по индексу, а по
- 18. Если последовательность записей упорядочена относительно какого-либо столбца (поля), то такая таблица называется упорядоченной, иначе – таблица
- 19. Перечень операций над отдельной ячейкой определяется типом ячейки: PersonList[1].Index := 190000; PersonList[1].Name := 'Иванов'; PersonList[1].Adress :=
- 20. 4. Множества
- 21. Наряду с массивами и записями существует еще один структурированный тип – множество. Этот тип используется не
- 22. Тип множество соответствует математическому понятию множества в смысле операций, которые допускаются над структурами такого типа. Множество
- 23. Множества, так же как и массивы, объединяют однотипные элементы. Поэтому в описании множества обязательно должен быть
- 24. В отличие от массивов и записей в множестве отсутствует возможность обращения к отдельным элементам. Операции выполняются
- 25. В Паскале в качестве типов элементов множества могут использоваться типы, максимальное количество значений которых не превышает
- 26. 5. Динамические массивы
- 27. При работе с массивами практически всегда возникает задача настройки программы на фактическое количество элементов массива. В
- 28. Первый вариант – использование констант для задания размерности массива. Program first; const n = 10; var
- 29. Второй вариант – программист планирует некоторое условно максимальное (теоретическое) количество элементов, которое и используется при объявлении
- 30. Program second; var a : array [1..25] of real; i, nf : integer; begin writeln('введите фактич.
- 31. Вариант третий – в нужный момент времени надо выделить динамическую память в требуемом объеме, а после
- 32. Program dynam_memory; type mas = array[1..2] of ; ms = ^mas; var a : ms; i,
- 33. Где нужны динамические массивы? Задача. Ввести размер массива, затем – элементы массива. Отсортировать массив и вывести
- 34. © С.В.Кухта, 2010 Использование указателей program qq; type intArray = array[1..1] of integer; var A: ^intArray;
- 35. Использование указателей для выделения памяти используют процедуру GetMem( указатель, размер в байтах ); указатель должен быть
- 36. 6. Постановка задачи поиска элемента в массиве
- 37. Поиск в массиве Одно из наиболее часто встречающихся в программировании действий – поиск данных. Существует несколько
- 38. Пусть A = {a1, a2, ...} – последовательность однотипных элементов и b – некоторый элемент, обладающий
- 39. Поскольку представление последовательности в памяти может быть осуществлено в виде массива, задачи могут быть уточнены как
- 40. Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: Псевдокод: { считаем, что первый элемент –
- 41. Максимальный элемент max := a[1]; { считаем, что первый – максимальный } iMax := 1; for
- 42. © С.В.Кухта, 2009 program qq; const N = 5; var a: array [1..N] of integer; i,
- 43. При дальнейшем рассмотрении делается принципиальное допущение: группа данных, в которой необходимо найти заданный элемент, фиксирована. Будем
- 44. Задача заключается в поиске элемента, ключ которого равен заданному «аргументу поиска» x. Полученный в результате индекс
- 45. С точки зрения теории множеств поиск можно рассматривать, как отображение множества X = {x1, x2, ...,
- 46. Алгоритм поиска может возвратить элемент массива (или всю найденную запись массива) или чаще всего может возвратить
- 47. Поиск, по завершении которого найден элемент массива с ключом, равным аргументу поиска, называется успешным или результативным.
- 48. Однако возможно, что поиск некоторого конкретного аргумента в массиве является неудачным (безрезультатным), т.е. в данном массиве
- 49. Поиск требуемой информации применяется ко всем основным структурам данных с произвольным доступом: массивам, спискам (одно- и
- 50. Задача – найти в массиве элемент, равный x, или установить, что его нет. Решение: для произвольного
- 51. 7. Алгоритмы поиска элемента в массиве
- 52. Нахождение информации в неотсортированной структуре данных, например в массиве, требует применения последовательного поиска. Последовательный (или линейный)
- 53. Линейный поиск nX := 0; for i:=1 to N do if A[i] = X then begin
- 54. Рассмотрим примеры последовательного поиска с циклами for и while. Функции линейного поиска Type Item = record
- 55. Функции линейного поиска function search_s1(A: Mas; N: integer; key: Item): integer; var i: integer; begin for
- 56. Функции линейного поиска function search_s2(A: Mas; N: integer; key: Item): integer; var i: integer; begin i:=0;
- 57. Последовательный поиск выполнит в среднем случае проверку N/2 элементов, в лучшем – 1 элемента, а в
- 58. Недостаток этого поиска: медленное выполнение при большом объеме просматриваемого массива. Но если данные не отсортированы, то
- 59. Двоичный (или бинарный) поиск основан на итерационном сравнении ключа поиска с центральным элементом текущей части массива.
- 60. При каждой итерации находится середина текущей анализируемой части, т.е. интервал анализа делится пополам (на 2): 1/2,
- 61. Двоичный поиск X = 7 X 8 4 X > 4 6 X > 6 Выбрать
- 62. Двоичный поиск nX := 0; L := 1; R := N; {границы: ищем от A[1] до
- 63. Этот метод поиска значительно эффективнее чем последовательный поиск, но требует, чтобы данные были предварительно упорядочены (отсортированы).
- 65. Скачать презентацию