Функция qsort

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

Пример работы программы

CppStudio.com
2 10 11 14 19 25
Автор: admin
Дата: 04.09.2012
Поделиться:

Комментарии

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.