Прототип функции 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; }
Комментарии