В определениях массива ADT существует в литературе, нет четкого утверждения об этом:
Объект, который хранится в i-м индексе массива, ДОЛЖЕН иметь то же значение, когда i-й элемент извлекаться. (Если оно не изменилось между сохранением и извлечением).
Тогда в реализации массива ADT могут быть возможны разные значения, такие как arr.Store(i) = 1;
и затем arr.Retrieve(i) != 1
.
Итак, почему это важно? Например, отсортированный массив - это структура данных, используемая для хранения отсортированной последовательности элементов. Если отсортированный массив реализован с использованием простого массива, вот sudo-код:
class SortedArray
{
private int *array;
public void SortedArray(int size) {
array = new int[size];
for (int i=0; i<size; i++) array[i] = 0;
}
public int Retrieve(int index) {
return array[index];
}
public int Store(int index, int value) {
array[index] = value;
sort(array);
}
}
Четко вставленный элемент в индекс i
не go остается на том же месте. Таким образом, вопрос:
Является ли условие (сохраненный элемент остается в указанном месте), не указано, потому что 1 - это СЛИШКОМ ясно или 2 - естественно и обычно это правда или 3 - это не требуется, или что-то еще?