Задание № 781

Студент

Семенов Дмитрий

Задача

Быстрая сортировка произвольных массивов

Состояние

Завершено

Баллов

5

Дедлайн
31 октября 2016
Назначено

04.10.2016, 15:29

Завершено

24.10.2016, 10:02

Реализовать алгоритм быстрой сортировки, работающий с массивами произвольного типа (развитие задачи сортировки массива целых чисел).

void my_qsort(const void *ptr,
              size_t count, size_t size,
              int (*cmp)(const void *, const void *));

где:

  • ptr — указатель на начало массива,
  • count — количество элементов в массиве,
  • size — размер одного элемента,
  • cmp — функция сравнения, которая возвращает число больше нуля, если первый аргумент больше второго, число меньше нуля, если первый меньше второго, и ноль, если аргументы равны.

Работу алгоритма протестировать с помощью assert. Особое внимание уделить краевым случаям: count=0, count=1, count четное, count нечетное, уже сортированный массив, массив из одинаковых чисел. Дополнительно реализовать тест генерации случайных массивов случайного размера, сортировкой и последующей проверкой.

Для реализации рандомизированной быстрой сортировки можно обратиться к задаче «Перетасовка».

Действия