Поиск:

Ответ в темуСоздание новой темы Создание опроса
> worst case алгоритмов сортировки 
:(
    Опции темы
Killer_13
  Дата 14.4.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Здр,
Один из вопросов на который следует найти ответ.
Значит сейчас изучаем различные алгоритмы сортировки, время сортировки и так д...
Может кто знает, или знает как это сделать.

1. Как посчитать worst case? 
Например при bubble sort есть определенное число проходов цыкла и определенное число перестановок.
Так вот в bubble sort worst case =n^2 Здесь мне наверное нужно считать проходы цыкла.

В QuickSort worst case = n^2 - так вот собственно е чему я все это. Мне нужно найти такую последовательность элементов чтоб при сортировке Quick sort случился worst case. насколько я понимаю, то нужно считать сколько раз мы поменяли местами элементы?
Припустим у меня 10 элементов, чтоб случился worst case нужно получить 100 в результате, что это за последовательность такая?

Спасибо за ответ.
PM MAIL   Вверх
Akina
Дата 14.4.2011, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Берём и проходим алгоритм в обратном порядке, на каждом сравнении проводя обмен.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Killer_13
Дата 14.4.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



При QuickSort даже в обратном порядке, n будет равно 10 или около того,
Вот алгоритм
Код

public class QuickSort {
public static void sort (int[] a) { 
quicksort(a, 0, a.length-1); 
}
private static void quicksort (int[] a, int unten, int oben) {
int tmp ;
int i = unten;
int j = oben;
int x = a[(unten+oben) / 2]; 
do {
while (a[i] < x) i++; 
while (a[j] > x) j--;
if ( i<=j ) {
tmp = a[i];
a[i] = a[j]; 
a[j] = tmp; 
i++;
j--;
}
} while (i <= j);

if (unten < j) quicksort(a, unten, j); 
if (i < oben ) quicksort(a, i, oben );
}
}


И как в нем на каждом сравнении проводить обмен? smile
Должна же быть такая последовательность!
Тут не алгоритм нужно править, нужно править последовательность. тоисть алгоритм изменять неззя.
PM MAIL   Вверх
Akina
Дата 14.4.2011, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Killer_13 @  14.4.2011,  21:14 Найти цитируемый пост)
И как в нем на каждом сравнении проводить обмен?

Что сравниваем, то и меняем.

Добавлено через 48 секунд
Цитата(Killer_13 @  14.4.2011,  21:14 Найти цитируемый пост)
Тут не алгоритм нужно править, нужно править последовательность. тоисть алгоритм изменять неззя. 

Он не изменяется, а инвертируется. Получается "алгоритм медленного разупорядочивания".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Killer_13
Дата 14.4.2011, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Что-то не совсем понял, так что нужно сделать, чтоб не менять алгоритм?
PM MAIL   Вверх
qwertinpop
Дата 23.4.2011, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.4.2011

Репутация: нет
Всего: нет



надо чтобы выбирались всегда наибольшие или наименьшие значения int x = a[(unten+oben) / 2] здесь
PM MAIL   Вверх
esperanto
Дата 27.4.2011, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 31.5.2003

Репутация: 2
Всего: 4



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

А в нерандомизированном, худший случай, это когда массив длиной к, делится на два массива длиной 1 и к-1 соответственно
--------------------
B.Sc ->M.Sc.->Microsoft SDE-> (Ph.D. student + Intel SDE + psyсhology B.A) - > Skype SDET
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.