
Контрольные вопросы
АТД “отображение” - основные операции, простейшие способы реализации.
АТД “отображение” - использование индексов массивов как ключей особого вида.
АТД “множество” - основные операции, простейшие способы реализации.
АТД “множество” - повышение быстродействия за счет упорядочивания ключей.
Реализация АТД “множество” на основе характеристических векторов.
Понятие вычислительной сложности. Основные функции оценки вычислительной сложности.
Алгоритм бинарного поиска.
Простейшие алгоритмы сортировки - пузырьковая, вставками, выбором.
Алгоритм сортировки слиянием.
Алгоритм быстрой сортировки.
Пример решения задачи базового уровня
Задача:Пользователь вводит в программу через консоль последовательность пар ключ-значение из положительных целых чисел, завершая ввод одним нулем либо одним отрицательным числом. Затем пользователь вводит еще одно положительное число-ключ. Программа ищет среди ранее введенных пар ключ-значение запись с таким ключом и, в случае успеха, выдает на экране соответствующее ему значение. Если такого ключа нет, программа пишет сообщение об ошибке. Если ключ встречается более одного раза, программа выдает последнее из введенных значений.
Решение:
#include "integer_map.hpp"
#include <iostream>
int main ()
{
// Создаем объект-отображение
IntegerMap * pMap = IntegerMapCreate();
// Вводим последовательность пар ключ-значение
std::cout << "Input sequence of integer key-value pairs: " << std::endl;
while ( true )
{
// Вводим до появления ошибок или ввода неположительного значения
int tempKey, tempValue;
std::cin >> tempKey >> tempValue;
if ( std::cin && tempKey > 0 )
// Помещаем пару ключ-значение в отображение
IntegerMapInsertKey( * pMap, tempKey, tempValue );
else
break;
}
// Вводим интересующий ключ
std::cout << "Input interested key: " << std::endl;
int searchKey;
std::cin >> searchKey;
if ( std::cin )
{
// Если ключ имеется в отображении, печатаем соответствующее ему значение
if ( IntegerMapHasKey( * pMap, searchKey ) )
std::cout << "Result: " << IntegerMapFind( * pMap, searchKey );
// Иначе, печатаем, что ключ отсутствует
else
std::cout << "Error: Key is undefined.";
}
else
// Ошибка ввода ключа
std::cout << "Error: Key is not a number.";
std::cout << std::endl;
// Освобождаем ресурсы объекта-отображения
IntegerMapDestroy( pMap );
}
Результат выполнения: