Здравствуйте, Glas, Вы писали:
G>Здравствуйте, Glas, Вы писали:
G>>Есть массив значений, каждое значение имеет свой ID. Нужно отсортировать этот массив так, чтобы одинаковые значения были отсортированы по ID. Сейчас я сортирую 2 раза, сперва массив, потом ID. Но по времени не укладываюсь в рамки
G>Мда, а причина то оказывается не в том, что сортировка в 2 прохода
Тупо все циклы занимают 50% времени, 45% на перемещение данных и 5% на досортировку ID.
Из примера кода приведенного ранее:
while (i <= j)
{
while (*matrix(i) < p && i <= last) ++i;
while (*matrix(j) > p && j >= first) --j;
if (i <= j)
{
temp = *matrix(i);
idxTemp = idx[i - 1];
*matrix(i) = *matrix(j);
*matrix(j) = temp;
idx[i - 1] = idx[j - 1];
idx[j - 1] = idxTemp;
++i; --j;
}
}
Возможно внутри вызовов типа matrix(i) спрятаны еще циклы?
... Если в первый момент идея не кажется абсурдной, она безнадёжна. © Альберт Эйнштейн