Главная / Программирование / Алгоритм быстрой сортировки использует вспомогательную функцию partition, которая разделяет массив на 3 части: в начале элементы, меньшие либо равные медиане, затем медиана, в конце элементы, большие либо равные медиане. Рассмотрим следующую реализацию фу

Алгоритм быстрой сортировки использует вспомогательную функцию partition, которая разделяет массив на 3 части: в начале элементы, меньшие либо равные медиане, затем медиана, в конце элементы, большие либо равные медиане. Рассмотрим следующую реализацию функции partition: void partition(double* a, int n, int *m) { if (*m != 0) // Ставим медиану в начало swap(&(a[0]), &(a[*m])); double x = a[0]; // Значение медианы int i = 0; int j = n; while (j-i > 1) { // Инв: a[1], a[2], ..., a[i] <= x // a[j], a[j+1], ..., a[n-1] > x if (a[i+1] <= x) { ++i; } else if (a[j-1] > x) --j; } else { ++i; --j; swap(&(a[i]), &(a[j])); } } if (i > 0) swap(&(a[0]), &(a[i])); *m = i; } Правильна ли подобная реализация, или она может привести к катастрофическому замедлению алгоритма быстрой сортировки в некоторых случаях?

вопрос

Правильный ответ:

Реализация правильная.
Реализация неправильная.
Сложность вопроса
93
Сложность курса: Программирование
84
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Если бы не опубликованные решения - я бы не осилил c этими тестами интуит.
15 дек 2017
Аноним
Пишет вам помощник профессора! Тотчас уничтожьте сайт с ответами с интуит. Не ломайте образование
14 янв 2016
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.