незваный гость писал(а):
1) Алгорифмом funQSort() пользоваться не рекомендую. Настойчиво не рекомендую. Он может зациклиться при появлении равных элементов в массиве.
Можно узнать, в какой именно строке он зацикливается?
незваный гость писал(а):
 правильно ли я понимаю, что ‹array› — это сортируемый сегмент ‹base›, а ‹middlle› — ‹midd›? Правильно ли я понимаю, что ‹len› — это длина сортируемого сегмента, а не константа?
"array" соответствует "base", "middle" это "midd". Но "len" это именно константа - длина внутренних массивов "count" и "value", "lenF" в алгоритме сортировки - это другая переменная.
Да, смысл теряется, да, есть сортировка слиянием, но ведь вопрос был не в этом, а можно ли избежать появления 

 при сохранении средней сложности 

.
незваный гость писал(а):
Попробуйте покатать свой алгорифм, например, при array[a] = 100 + a. (или -100 + a). Вас ждут сюрпризы.
Ага, ждут. Там ещё и "value" надо нулями инициализировать. Но с другой стороны, такой монотонный рост или убывание несложно и отсечь. Или придумать другой вариант - возможно, с несколькими (фиксированным количеством) проходами по массиву.
Добавлено спустя 42 минуты 6 секунд:незваный гость писал(а):
Правильно ли я понимаю, что Вы используете дополнительную память, пропорциональную длине сортируемого массива?
Нет, это - неверно, там фиксированные массивы. Если бы это было не так, сложность этого добавочного алгоритма уже не была бы 

.
Добавлено спустя 21 минуту 37 секунд:
Общая идея такова - любой алгоритм, который за фиксированное чило проходов (или итераций вложенного цикла) сможет найти значение вне "плохого" интервала 

, зависящего от 

, - подойдёт. Его сложность 

 сложится с оценкой основного цикла 

 и получим: 

, что с учётом рекурсии даст 

.
В данных Вами определениях такая арифметика, похоже, не реализуема. Так что смысла усовершенствований моего опуса вроде и нет.