Знатоки С++, нужна помощь.


гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
Назад к темам раздела.
2007-11-13 20:57:54 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
1) Алгоритм сортировки сияния:
void Merge(int* m, int l, int mid, int r){
int* tmp=new int[r-l];
int i=l, j=mid+1, k=0;
while(i<=mid && j<=r){
if(m[i]<m[j])
tmp[k++]=m[i++];
else tmp[k++]=m[j++];}
while(i<=mid) tmp[k++]=m[i++];
while(j<=r) tmp[k++]=m[j++];
for(k=l; k<=r; k++) m[k]=tmp[k-l];
delete[] tmp;
}

Так вот, грамотно написанный алгоритм работает за время О(N). У мня вопрос, почему именно О(N)? Я в этом плохо разбираюсь, хотелось бы проконсультироваться.
 
2007-11-13 20:58:16 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
стоп забыл еще одну функцию, ща
 
2007-11-13 21:00:36 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
void MergeSort(int* m, int l, int r){
if(l<r){
int mid=(r+l)/r;
mergesort(m,l,mid);
MergeSort(m,mid+1,r);
Merge(m,l,mid,r);
}
}

Вот. Также хотелось бы знать лучший и худший случай для MergeSort, конечно, мне желательно узнать лучший, но и худший тож не помешает ;). Заранее спасибо, могу поблагодарить монетками ;)
 
2007-11-13 21:00:38 DREAD_Diztemperr Информация
Сортировка сияния? О_о это как?
 
2007-11-13 21:00:48 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
Слияния***
 
2007-11-13 21:05:52 гильдия Мудрецы (Мастер)[4895] гильдия Собиратели (Мастер)[3573] WinterSilence Информация
а что есть О и N?
 
2007-11-13 21:08:01 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
Время — основной параметр, характеризующий быстродействие алгоритма. Называется также вычислительной сложностью. Для упорядочения важны худшее, среднее и лучшее поведение алгоритма в терминах размера списка (n). Для типичного алгоритма хорошее поведение — это O(n log n) и плохое поведение — это O(n&#178;). Идеальное поведение для упорядочения — O(n). Алгоритмы сортировки, использующие только абстрактную операцию сравнения ключей всегда нуждаются по меньшей мере в O(n log n) сравнениях в среднем. (С) Wikipedia.
Моими словами хуже объясню.
 
2007-11-13 21:08:35 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
О(n&#178;) = O(n^2)
 
2007-11-13 21:21:42 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
куку, жители Ледрака, очень нужна ваша помощь=(((
 
2007-11-13 22:01:50 гильдия Столичные Шахтеры (Мастер)[5998] гильдия Бойцы (Адепт)[1093] Миха Информация
ап
 
2007-11-14 00:24:53 гильдия Столичные Шахтеры (Грандмастер)[18642] гильдия Заморские Купцы (Мастер)[8512] fanatik Информация
мне это сортировку деревом напомниает...с датой и временем умеешь работать?
на маленьких массивах эта штука всегда 0 показывать будет...
так вот создаешь огромный массив...ноуеще от быстродействи компа зависит, дома у меня было одно время, в инсте в несколько раз больше))
так вот рандомно присваиваешь значения элементам массива и вычисляешь время сортировки...

в итоге несколько раз проделав...можно приближенно среднее посчитать и проследить зависимость t(n)...и далее делай выводы, работает ли твоя сортировка быстрее пузырька или же это...)
 
2007-11-14 02:26:55 гильдия Бойцы (Адепт)[2267] гильдия Королевские Лабоходы (Ученик)[145] Silver_Phoenix Информация