Amazon AWS Kiev recruiting event at March 4-7th

Tarasik
Уже с Приветом
Posts: 762
Joined: 20 Jan 2005 00:27
Location: La Jolla, California

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by Tarasik »

mr boombastic wrote: насчёт divide and conquer я не прав но мой пойнт был в том что через master theorem нельзя доказать randomized версию quicksort в чистом виде. если посмотреть то они там предполагают что в наихудшем случае это разбиение будет на 0 и (n-1) и оттуда уже пляшут. но в randomized версии эти разбиения случайные.
А вот вам пример из вашей любимой Курсеры где Тим доказывает линейное время исполнения RandomizedSelect используя MasterMethod (MasterTheorem) для average case.
https://class.coursera.org/algo-003/lecture/36
Tarasik
Уже с Приветом
Posts: 762
Joined: 20 Jan 2005 00:27
Location: La Jolla, California

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by Tarasik »

mr boombastic wrote:
Tarasik wrote: Master Method как средство вычисления времязатрат алгоритма подходит везде где используется рекурсия.
везде?
везде где неизменная зависимость выполнения вызываемой и вызывающей функции, как мне кажется т.е. a > 1 a константа. и есть еще некоторе исключения т.е. почти во всех случаях
Last edited by Tarasik on 07 Mar 2013 23:46, edited 1 time in total.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by crypto5 »

Tarasik wrote:
mr boombastic wrote:
mr boombastic wrote:
Alexandr wrote:
mr boombastic wrote:я вообще заметил что про с,
как найти k-ый элемент в не отсортированном массиве?
к-ый по величине.

Делается похоже на quick sort в том плане что используется partitioning. Берем pivot и перебрасываем влево от него то что больше и вправо то что меньше (partitioning).
Если pivot оказывается в позиции больше k то делаем то же самое с левой частью от pivot и продолжаем искать элемент k.
Если меньше - то в правой части таким образом ищем элемент indexOf(pivot) - k. И так рекурсивно продолжаем искать пока pivot не совпадет с k

Удивительно но это займет линейное время (если считать используя master method).
Обычно спрашивают худшее время а не среднее, и оно у вас не линейное.
In vino Veritas!
mr boombastic
Уже с Приветом
Posts: 150
Joined: 18 May 2012 20:00

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by mr boombastic »

Tarasik wrote:
mr boombastic wrote: насчёт divide and conquer я не прав но мой пойнт был в том что через master theorem нельзя доказать randomized версию quicksort в чистом виде. если посмотреть то они там предполагают что в наихудшем случае это разбиение будет на 0 и (n-1) и оттуда уже пляшут. но в randomized версии эти разбиения случайные.
А вот вам пример из вашей любимой Курсеры где Тим доказывает линейное время исполнения RandomizedSelect используя MasterMethod (MasterTheorem) для average case.
https://class.coursera.org/algo-003/lecture/36
супер!!!! заметьте какие assumptions идут.

best pivot: the median!(but this is circular) и только потом рекуррентное соотношения.
ткните на следующее видео и увидите "нормальный" proof.
You do not have the required permissions to view the files attached to this post.
Tarasik
Уже с Приветом
Posts: 762
Joined: 20 Jan 2005 00:27
Location: La Jolla, California

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by Tarasik »

crypto5 wrote: Обычно спрашивают худшее время а не среднее, и оно у вас не линейное.
Worst - n* n
Average n
Best n
Tarasik
Уже с Приветом
Posts: 762
Joined: 20 Jan 2005 00:27
Location: La Jolla, California

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by Tarasik »

mr boombastic wrote:
Tarasik wrote:
mr boombastic wrote: насчёт divide and conquer я не прав но мой пойнт был в том что через master theorem нельзя доказать randomized версию quicksort в чистом виде. если посмотреть то они там предполагают что в наихудшем случае это разбиение будет на 0 и (n-1) и оттуда уже пляшут. но в randomized версии эти разбиения случайные.
А вот вам пример из вашей любимой Курсеры где Тим доказывает линейное время исполнения RandomizedSelect используя MasterMethod (MasterTheorem) для average case.
https://class.coursera.org/algo-003/lecture/36
супер!!!! заметьте какие assumptions идут.

best pivot: the median!(but this is circular) и только потом рекуррентное соотношения.
ткните на следующее видео и увидите "нормальный" proof.
Я его видел. Но если вы его выведете в Амазоне на доске то вас могут не взять - сочтут шыбко умным (overqualified) :lol:
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by crypto5 »

Tarasik wrote:
crypto5 wrote: Обычно спрашивают худшее время а не среднее, и оно у вас не линейное.
Worst - n* n
Average n
Best n
Ну так вот утверждается что есть worst линейный: http://en.wikipedia.org/wiki/Selection_ ... _algorithm Я уж не говорю что массив можно отсортировать за nlogn и найти kth за константное время
In vino Veritas!
Tarasik
Уже с Приветом
Posts: 762
Joined: 20 Jan 2005 00:27
Location: La Jolla, California

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by Tarasik »

crypto5 wrote:
Tarasik wrote:
crypto5 wrote: Обычно спрашивают худшее время а не среднее, и оно у вас не линейное.
Worst - n* n
Average n
Best n
Ну так вот утверждается что есть worst линейный: http://en.wikipedia.org/wiki/Selection_ ... _algorithm Я уж не говорю что массив можно отсортировать за nlogn и найти kth за константное время
В худшем случае квиксорт сортирует за квадратное время. Но почему то именно он используется (с модификациями) в известных мне системах. Посмотрите ка исходники Джавы и дотНета.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by crypto5 »

Tarasik wrote:
crypto5 wrote:
Tarasik wrote:
crypto5 wrote: Обычно спрашивают худшее время а не среднее, и оно у вас не линейное.
Worst - n* n
Average n
Best n
Ну так вот утверждается что есть worst линейный: http://en.wikipedia.org/wiki/Selection_ ... _algorithm Я уж не говорю что массив можно отсортировать за nlogn и найти kth за константное время
В худшем случае квиксорт сортирует за квадратное время. Но почему то именно он используется (с модификациями) в известных мне системах. Посмотрите ка исходники Джавы и дотНета.
Я смотрел исходники сортировки на джаве, и разных стд либ си, везде используется не чистый qsort а гибрид с merge sort. Но это к делу не относится, я просто обратил внимание что на интервью обычно спрашивают худшее время, и ваш вариант не оптимальный по этой характеристике.
In vino Veritas!
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by avitya »

Tarasik wrote:
crypto5 wrote:
Tarasik wrote:
crypto5 wrote: Обычно спрашивают худшее время а не среднее, и оно у вас не линейное.
Worst - n* n
Average n
Best n
Ну так вот утверждается что есть worst линейный: http://en.wikipedia.org/wiki/Selection_ ... _algorithm Я уж не говорю что массив можно отсортировать за nlogn и найти kth за константное время
В худшем случае квиксорт сортирует за квадратное время. Но почему то именно он используется (с модификациями) в известных мне системах. Посмотрите ка исходники Джавы и дотНета.
Ну надо больше систем изучать, я вам так скажу :)
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by avitya »

crypto5 wrote:
Tarasik wrote:
crypto5 wrote:
Tarasik wrote:
crypto5 wrote: Обычно спрашивают худшее время а не среднее, и оно у вас не линейное.
Worst - n* n
Average n
Best n
Ну так вот утверждается что есть worst линейный: http://en.wikipedia.org/wiki/Selection_ ... _algorithm Я уж не говорю что массив можно отсортировать за nlogn и найти kth за константное время
В худшем случае квиксорт сортирует за квадратное время. Но почему то именно он используется (с модификациями) в известных мне системах. Посмотрите ка исходники Джавы и дотНета.
Я смотрел исходники сортировки на джаве, и разных стд либ си, везде используется не чистый qsort а гибрид с merge sort. Но это к делу не относится, я просто обратил внимание что на интервью обычно спрашивают худшее время, и ваш вариант не оптимальный по этой характеристике.
Как ни странно, обычно последние 10 элементов используют не merge, а insertion sort. Мердж не хорош дополнительными буферами, и его применение в наше время в основном во внешних/параллельных сортировках.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by crypto5 »

avitya wrote:
crypto5 wrote:
Tarasik wrote:
crypto5 wrote:
Tarasik wrote: Worst - n* n
Average n
Best n
Ну так вот утверждается что есть worst линейный: http://en.wikipedia.org/wiki/Selection_ ... _algorithm Я уж не говорю что массив можно отсортировать за nlogn и найти kth за константное время
В худшем случае квиксорт сортирует за квадратное время. Но почему то именно он используется (с модификациями) в известных мне системах. Посмотрите ка исходники Джавы и дотНета.
Я смотрел исходники сортировки на джаве, и разных стд либ си, везде используется не чистый qsort а гибрид с merge sort. Но это к делу не относится, я просто обратил внимание что на интервью обычно спрашивают худшее время, и ваш вариант не оптимальный по этой характеристике.
Как ни странно, обычно последние 10 элементов используют не merge, а insertion sort. Мердж не хорош дополнительными буферами, и его применение в наше время в основном во внешних/параллельных сортировках.
В линуксе вообще heapsort используют: https://github.com/torvalds/linux/blob/ ... lib/sort.c
In vino Veritas!
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by crypto5 »

avitya wrote:
crypto5 wrote:
Tarasik wrote:
crypto5 wrote:
Tarasik wrote: Worst - n* n
Average n
Best n
Ну так вот утверждается что есть worst линейный: http://en.wikipedia.org/wiki/Selection_ ... _algorithm Я уж не говорю что массив можно отсортировать за nlogn и найти kth за константное время
В худшем случае квиксорт сортирует за квадратное время. Но почему то именно он используется (с модификациями) в известных мне системах. Посмотрите ка исходники Джавы и дотНета.
Я смотрел исходники сортировки на джаве, и разных стд либ си, везде используется не чистый qsort а гибрид с merge sort. Но это к делу не относится, я просто обратил внимание что на интервью обычно спрашивают худшее время, и ваш вариант не оптимальный по этой характеристике.
Мердж не хорош дополнительными буферами, и его применение в наше время в основном во внешних/параллельных сортировках.
Вроде как достаточно просто сконструировать inplace merge sort без дополнительных буферов.
In vino Veritas!
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by avitya »

inplace merge не самая шустрая операция :)
http://gcc.gnu.org/onlinedocs/libstdc++ ... ource.html строчка 5474.
HeapSort не стабильная сортировка. Некоторых не устраивает.
mr boombastic
Уже с Приветом
Posts: 150
Joined: 18 May 2012 20:00

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by mr boombastic »

в джаве по моему мердж сорт для обьектных типов и квик сорт для примитивных так как квик сорт не стабилен и может относительный порядок одинаковых элементов поменять.
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by avitya »

Ну quicksort можно сделать стабильной, но потеряется эффективность.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by crypto5 »

А что в этой строчке?
In vino Veritas!
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Amazon AWS Kiev recruiting event at March 4-7th

Post by avitya »

Вызор итеративного интросорта, и в конце инсершн. интросорт это лефт рекурсив квиксорт, пока массив не станет размера S. Потом инсершн сорт всё ставит на свои места.

Return to “Работа и Карьера в IT”