JavaRush /Java блог /Архив info.javarush /Собери мысли в кучу, или зарядка для ума.
Javis
30 уровень

Собери мысли в кучу, или зарядка для ума.

Статья из группы Архив info.javarush
Привет, коллеги! Дойдя до 10 лвл, и не много затянув с оплатой дальнейшего обучения, по причине не больших финансовых трудностей, решил зря время не терять и разобрать наиболее популярные алгоритмы сортировки. Если кому-то будет интересно, чуть позже могу сделать не большой обзор с полезными плюшками. Так вот, дойдя до сортировки кучей (двоичной) или, как ее еще называют пирамидальной сортировкой (HeapSort), столкнулся с тем, что хотел найти код, описывающий весь алгоритм в одном методе, а не как на WiKi, состоящий из кучи методов. Плюс ко всему код должен был быть понятен и максимально прост. Нашел уже было алгоритм на другом ресурсе, более менее приемлемый, который все-равно пришлось бы чуть подшаманить, но тут наткнулся на видео:
1ч.: http://www.youtube.com/watch?v=cT5K1wPZfrg 2ч.: http://www.youtube.com/watch?v=_9er7Vtm8BY Вот его код в txt: https://www.dropbox.com/s/btzxx20dpjx1qp2/Heap%20Sort.txt
Фишка в том, что парень написал код (HeapSort), но там есть баг. Он знает об этом, но решения проблемы найти не смог. Мне стало интересно, и я решил расколдовать загадку тени от хрена. В общем, спустя примерно 4 часа мозгового штурма, попутно разбираясь в каждом шаге алгоритма (т.к. изначально я не понимал, как он работает), и отвлекаясь на домашние дела, я победил этот трабл. Код, конечно, я сделал более компактным, и истребил косяки. В итоге все отлично функционирует и сортируется. Рабочий код пока выкладывать не буду, чтобы никого не смущать вариантом быстрого решения задачи. :)
Если вам будет интересно разобраться в этом алгоритме и его баге - Welcome! Задачка интересная. :)
Всем успехов!
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ