незваный гость писал(а):
Давайте начнем с простого:
С позиции данных Вами определений мои рассуждения, конечно, неверны. Но и сложность
- тоже. Дело в том, что "количество операций" - понятие довольно запутанное. Каких операций? Если сортировать строки длины
(пусть они всегда сравниваются целиком), то она будет уже
.
незваный гость писал(а):
Далее: у меня вызывают серьезные сомнения (говоря формально) Ваши рассуждения о бесконечности.
Возможно, но если не забыл - так нас учили "в школе".
незваный гость писал(а):
Прикинуть Вы можете, доказать — нет.
Доказать измерением отсутствие что-либо вообще невозможно, но вопрос о строгом доказательстве изначально и не стоял. Если знать узкие места алгоритма, то данные можно подобрать соответствующим образом. Либо прогнать на нескольких наборах. Для заданного вопроса этого, по-моему, достаточно...
незваный гость писал(а):
Кроме того, иногда важна не только сложность в среднем, но и сложность в худшем случае. Маленькая вероятность? Это никого не волнует, если речь идет об управлении АЭС. (И, «Вы будете долго смеяться, но» я сталкивался с подобными ошибками в системах реального времени, которые «выстрелили» у заказчика.)
Ну, в общем, да - с этим трудно не согласиться...
незваный гость писал(а):
P.S. Может быть, я зря не сделал оговорку: Предъявите пример алгорифма, позволяющего избежать
в худшем случае, и не ухудшающего время в среднем.. Если Вы меня ловите на этом, приношу Вам свои извинения.
У меня что-то такое ощущение, что это Вы меня ловите
. Про время в среднем я нигде не говорил, поэтому такая оговорка была бы некорректной. Просто любой дополнительный цикл сложности не выше
увеличит время раза в два (мой - поболе), что полностью эквивалентно сравнению, скажем, 8-байтовых данных вместо 4-байтовых. Если принять, что сложность алгоритма от размера элемента данных не зависит, то и моя добавка не должна учитываться тоже.
незваный гость писал(а):
P.P.S.Быстрый тест для любых Ваших рассуждений: как будет работать Ваш алгорифм при всех данных равных? (Я знаю, правильный вариант быстрой сортировки с этим легко справляется. Но не любой.)
Ну, приведённый вариант на этом вроде как ляжет в последнем цикле анализа count, но если несколько докрутить под граничные условия, что в некотором диапазоне счётчик может быть нулевым, то справится. А алгоритм сортировки у меня под носом лежит такой:
Код:
void funQSort(
dtype *base[],
const int lenF,
int limL,
const int limH)
{
int eleL, eleH;
dtype *midd, *swap;
while (limL < limH) {
/* Initialize variables */
eleL = limL;
eleH = limH;
midd = base[(eleL + eleH) >> 1];
/* Compare rows */
while (eleL < eleH) {
/* Compare elements */
while (memcmp(base[eleL], midd, lenF) < 0) {
eleL++;
}
while (memcmp(base[eleH], midd, lenF) > 0) {
eleH--;
}
/* Swap improper elements */
if (eleL <= eleH) {
swap = base[eleL];
base[eleL] = base[eleH];
base[eleH] = swap;
eleL++;
eleH--;
}
}
/* Recurrent lower iteration */
if (eleH > limL) {
funQSort(base, lenF, limL, eleH);
}
/* Next higher iteration */
limL = eleL;
}
}
Добавлено спустя 11 минут 44 секунды:незваный гость писал(а):
Если Вас интересует формальная сторона вопроса, Вам нужно почитать хотя бы вводный курс в этот предмет.
Нет, честно сказать, в данный момент не очень интересует... Лимон за
? Пожалуй, есть более простые способы разбогатеть
незваный гость писал(а):
Достал с полки Липского. В индексе нет трудоемкости, но есть сложность.
Этому нас тоже "учили в школе". Возможно, термин имеет ограниченное хождение. Зря говорить я бы не стал.