Cтраница 1
Массивы индексов имеют обычно последовательную организацию с переполнением. [1]
Имея резервный массив индексов, позволяющий установить в процессе исключений, какие члены столбца являются перемещениями, а какие реакциями-эти перемены в знаках основной матрицы несложно учесть программным путеу. [2]
Такой поход, предусматривающий использование массива индексов вместо реальных элементов, работает в любом языке программирования, который поддерживает массивы. Будучи выполненной на массиве элементов фиксированного размера, сортировка по указателям во многом эквивалентна индексной сортировке, но при этом адрес массива добавляется к каждому индексу. Но сортировка по указателям - это более общая форма сортировки, ибо указатели могут указывать на что угодно, а элементы, подвергающиеся сортировке, отнюдь не обязательно должны иметь фиксированные размеры. [3]
Эта реализация программы 9.11 поддерживает pq как массив индексов некоторого клиентского массива. [4]
Существуют также случайно организованные массивы данных с массивом базовых индексов и последовательные индексированные массивы данных с переполнением. [5]
Непрямая сортировка требует дополнительного пространства памяти для размещения массива индексов или массива указателей и дополнительного времени для выполнения операций непрямого сравнения. Во многих приложениях эти затраты являются вполне оправданной ценой за гибкость и возможность вообще не затрагивать записи. В случае файлов, состоящих из больших записей, мы практически всегда будем пользоваться непрямой сортировкой, а во многих приложениях часто происходит так, что вообще нет необходимости перемещать данные. В рамках этой книги обычно применяется прямой доступ к данным. Однако в некоторых приложениях все-таки придется воспользоваться массивами индексов и указателей во избежание перемещения данных; именно в силу этих причин мы и остановились здесь на этой теме. [6]
Требуется точно определить, что выбранный вид сортировки выполняет упорядочивание массива индексов, а не простые целые числа. [7]
Исходными данными являются элементы матрицы проводимостей, задаваемые массивом справок и коэффициентов, порядок матрицы [ Y ] и два массива индексов точек включения выделяемых элементов. Результаты вычисления передаточной функции на ЭВМ выдаются на печать в форме, подобной приведенной на стр. Как и в предыдущем случае, максимальная сложность схемы, реализуемой программой, может быть оценена - 50 узлами. Число выделяемых элементов ограничено объемом памяти ЭВМ и допустимым объемом вычислений. [8]
При разработке реализации применяется в точности такой же подход, который использовался при индексной сортировке в разделе 6.8. Мы манипулируем индексами и перегружаем операцию operatoK таким образом, что сравнения адресуются к элементам массива индексов клиентской программы. С этой целью добавляется второй индексный массив, обеспечивающий отслеживание положения ключей в очереди по приоритетам. [9]
Пример индексации, в рамках которого одни и те же элементы сортируются по двум различным ключам, представлен на рис. 6.14. Одна клиентская программа может определить operator для работы с одним видом ключей, а другая - для использования с другим ключом, при этом оба они могут воспользоваться одной и той же программой сортировки, чтобы построить массив индексов, который позволил бы получать доступ к элементам в порядке расположения их ключей. [10]
Пример и нде к саи и и, в рамк н которого одни и те же элементы сортируются ЕЮ двум раэли шым ключам, л ред ставлен на рис, 6.14. Одна клиентская программа может определить operator для работы с одним пи лом ключей, а друга ц - для использования с другим ключом, при этом оба они могут № с пользоваться шшой к той же программой сортировки, чтобы построить массив индексов, который познали. [11]
Основной недостаток применения подобного рода косвенной адресации состоит в необходимости расхода дополнительного объема памяти. Размер массива индексов должен иметь размер массива данных, тогда как максимальный размер очереди по приоритетам может быть намного меньше. Другой подход к построению очереди по приоритетам над данными, образующими массив, заключается в том, чтобы клиентская программа строила записи, состоящие из ключа и индекса массива в качестве дополнительной информации, или в использовании индексного ключа с перегруженной операцией operator, поддерживаемой клиентской программой. Далее, если рассматриваемая реализация использует представление со списочным распределением памяти, такое как в программах 9.9 и 9.10 или в упражнении 9.41, то пространство памяти, используемое очередью по приоритетам, будет пропорционально максимальному количеству элементов в очереди в каждый конкретный момент времени. Такого рода подходы по сравнению с подходом, примененным в программе 9.12, выглядит предпочтительнее, если заранее нужно зарезервировать определенное пространство памяти необходимо заранее или если очередь по приоритетам включает в себя только небольшую часть массива данных. [12]
Индексация обозначается выражением вида Х [ ], где 1-одиночный индекс или массив индексов для вектора X. Функция взятие ( которая будет применяться позднее) обозначается как f и описывается аналогичным образом. [13]
Одним идентификатором может быть обозначена группа величин, называемая массивом. Каждая отдельная величина представляет собой элемент массива - переменную с индексами. У одного элемента массива индексов может быть несколько. Максимальное число индексов равно семи, в ряде версий языка оно сокращено до трех. Индексы у переменной с индексами составляют список индексов. [14]
Одним идентификатором может быть обозначена группа величин, называемая массивом. Каждая отдельная величина является элементом массива - переменной с индексами. У одного элемента массива индексов может быть несколько. Максимальное число индексов равно семи, в ряде версий языка оно сокращено до трех. Индексы у переменной с индексами составляют список индексов. Количество индексов в списке определяет размерность массива. [15]