Помогите правильно подситать сожность
От: Аноним  
Дата: 23.10.11 14:37
Оценка:
Здравствуйте такой код


std::vector<Object> obj_;
...............................
for(size_t i = 0, sz = obj_.size() - 1; i < sz; ++i)
{
...............................
 sort(obj_.begin() + i, obj_.end()); // Пускай это не   quick  сорт, а слиянием и всегда выполняетьс за NlogN
.............................
}


Я так понимаю это можно выразить рядом NlogN + (N -1 )log (N — 1) + (N — 2 )log (N — 2) + (N — 3 )log (N — 3) .... можно ли это выразить как то одной формулой.
Re: Помогите правильно подситать сожность
От: dilmah США  
Дата: 23.10.11 16:53
Оценка: 2 (1) +2
А>Я так понимаю это можно выразить рядом NlogN + (N -1 )log (N — 1) + (N — 2 )log (N — 2) + (N — 3 )log (N — 3) .... можно ли это выразить как то одной формулой.

O(logN * N^2)
Re: Помогите правильно подситать сожность
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 23.10.11 18:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте такой код



А>
А>std::vector<Object> obj_;
А>...............................
А>for(size_t i = 0, sz = obj_.size() - 1; i < sz; ++i)
А>{
А>...............................
А> sort(obj_.begin() + i, obj_.end()); // Пускай это не   quick  сорт, а слиянием и всегда выполняетьс за NlogN
А>.............................
А>}
А>


А>Я так понимаю это можно выразить рядом NlogN + (N -1 )log (N — 1) + (N — 2 )log (N — 2) + (N — 3 )log (N — 3) .... можно ли это выразить как то одной формулой.


А что? Уже вывели формулу определения сложности? И которая уже есть во всех учебниках?

Не знал
Мой новый проект "ВЕПРЬ-1"
Re: Помогите правильно подситать сожность
От: Итератор  
Дата: 23.10.11 18:38
Оценка: 2 (1)
Ну и вывод асимптотики ряда, для полноты ответа:
n/2 log(n)+ n/2 log(n-1) +...<n log(n)+(n-1)log(n-1)+...<n log(n)+ n log(n-1)+...
или
n/2 log(n!)<n log(n)+(n-1)log(n-1)+...<n log(n!)
и далее по формуле Стирлинга log(n!) ~ O(n log(n))
Re[2]: Помогите правильно подситать сожность
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 23.10.11 18:51
Оценка:
А потом сложность разная бывает...


1) Командная цикломатическая (алгоритмическая, графовая) сложность
2) Сложность чтения/восприятия/понимания
3) Сложность внесения изменений (модификации)
4) Сложность отладки/тестирования/поиска ошибок
5) Семиотическая сложность (когда идентификаторы лексемы используются в разных
конструкциях с разной семантикой, т.е. когда трудно за 1 просмотр выделить
глазами все использования цепочки символов и приходится просматривать
участок кода по много раз, чтобы понять его назначение).
6) Количественная сложность (определяется объёмом кода)

Есть другие

(с)
Мой новый проект "ВЕПРЬ-1"
Re[2]: Помогите правильно подситать сожность
От: _Obelisk_ Россия http://www.ibm.com
Дата: 24.10.11 08:02
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>А что? Уже вывели формулу определения сложности? И которая уже есть во всех учебниках?


Ну и зачем придираться к словам ?
В случаях с сортировками обычно под сложностью понимают число сравнений элементов. Вообще, в случаях с алгоритмами под сложностью обычно понимают число шагов некоторой абстрактной машины (например машины Тьюринга) реализующей данный алгоритм.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Помогите правильно подситать сожность
От: __kot2  
Дата: 24.10.11 10:36
Оценка:
Здравствуйте, dilmah, Вы писали:
А>>Я так понимаю это можно выразить рядом NlogN + (N -1 )log (N — 1) + (N — 2 )log (N — 2) + (N — 3 )log (N — 3) .... можно ли это выразить как то одной формулой.
D>O(logN * N^2)
может легко так получиться что будет быстрее — или как n*n или вообще как n. амортизационный анализ или как там его. зависит от того, насколько сильно элементы будут перемешаны и от реализации сортировки
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.