Иллюстрированный самоучитель по практике программирования

Библиотеки

А вот аналогичная функция icmp для сравнения целых:

Иллюстрированный самоучитель по практике программирования › Алгоритмы и структуры данных › Библиотеки

Мы могли бы написать:

? return v1-v2;

Но если v2 – большое положительное число, a v1 – большое по абсолютному значению отрицательное или наоборот, то получившееся переполнение привело бы к неправильному ответу. Прямое сравнение длиннее, но надежнее.

И здесь при вызове qsort нужно передать массив, его длину, размер сортируемых элементов и функцию сравнения:

int arr[N];
qsort(arr, N, sizeof(arr[0]), icmp);

В стандарте ANSI С определена также функция двоичного поиска bsearch. Как и qsort, этой функции нужен указатель на функцию сравнения (часто на ту же, что используется для qsort); bsearch возвращает указатель на найденный элемент или на NULL, если такого элемента нет. Вот наша программа для поиска имен в HTML-файле, переписанная с использованием bsearch:

Иллюстрированный самоучитель по практике программирования › Алгоритмы и структуры данных › Библиотеки

Иллюстрированный самоучитель по практике программирования › Алгоритмы и структуры данных › Библиотеки

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.