Прототип функции qsort:
void qsort ( void * first, size_t number, size_t size, int ( * comparator ) ( const void *, const void * ) );
| Название | Язык |
|---|---|
| stdlib.h | С |
| cstdlib | С++ |
Описание
Функция qsort выполняет сортировку num элементов массива, на который ссылается указатель first. Для каждого элемента массива устанавливается размер в байтах, который передается через параметр size. Последний параметр функции qsort — указатель comparator на функцию сравнения, которая используется для определения порядка следования элементов в отсортированном массиве.
Алгоритм сортировки используемый этой функцией сравнивает пары значений, путем вызова указанной функции сравнения, с двумя указателями на элементы массива.
Эта функция не возвращает никакого значения, но изменяет содержимое массива, на который указывает first. Таким образом, элементы массива занимают новые места, согласно отсортированному порядку.
Параметры:
- first
Указатель на первый элемент сортируемого массива. - number
Количество элементов в сортируемом массиве, на который ссылается указательfirst. - size
Размер одного элемента массива в байтах. - comparator
Функция, которая сравнивает два элемента. Функция должна иметь следующий прототип:
int funccmp( const void * val1, const void * val2 );
Функция должна принимать два параметра — указатели на элементы массива, типа void*. Эти параметры должны быть приведены к определённым типам данных. Возвращаемое значение этой функции должно быть отрицательным, равным нулю или положительным. Если val1 меньше, равен или больше, чем val2, функция должна вернуть отрицательное значение, ноль или положительное значение, соответственно.
Возвращаемое значение
нет
Пример: исходный код программы
//пример использования функции qsort
#include <iostream>
#include <cstdlib>
int vector[] = { 14, 10, 11, 19, 2, 25 };
int compare(const void * x1, const void * x2) // функция сравнения элементов массива
{
return ( *(int*)x1 - *(int*)x2 ); // если результат вычитания равен 0, то числа равны, < 0: x1 < x2; > 0: x1 > x2
}
int main ()
{
qsort(vector, 6, sizeof(int), compare); // сортируем массив чисел
for ( int ix = 0; ix < 6; ix++)
std::cout << vector[ix] << " ";
return 0;
}
Комментарии