Вопрос: Программа, демонстрирующую работу различных алгоритмов сортировки
Дано задание: разработать программу на языке Java, демонстрирующую работу различных алгоритмов сортировки. Программа должна быть написана с использованием многопоточности, чтобы была возможность одновременного наблюдения за работой нескольких алгоритмов сортировки.
Необходимо реализовать три простых алгоритма «пузырёк», «вставка», «выбор» и «быстрая сортировка».
Числа сортируемого массива на экране отображается в виде цветных линий, большему числу соответствует более длинная линия. При запуске приложения массив сначала заполняется случайными числами в диапазоне от 5 до 100. Все четыре алгоритма сортировки работают с одинаковым исходным не отсортированным массивом чисел.
С каждым алгоритмом сортировки связано две кнопки, имеющие двойное назначение. Первая кнопка предназначена для запуска или полной остановки алгоритма сортировки. Вторая кнопка предназначена для временной приостановки или последующего продолжения работы алгоритма сортировки. Работа каждого алгоритма сортировки производится в отдельном потоке.
При запуске приложения кнопки для каждого алгоритма сортировки находятся в следующем состоянии:
• кнопка один доступна, отображается надпись «Старт»;
• кнопка два недоступна, отображается надпись «Пауза».
на рисунке в этом состоянии находятся сортировка «Пузырёк» и «Быстрая».
При нажатии на кнопку «Старт», начинает работать соответствующий алгоритм сортировки. После перестановке двух чисел в массиве, линии соответствующие данным числам также должны поменяться местами (работа алгоритма визуализируется). Алгоритмы должны работать с некоторой задержкой, между шагами сортировки, чтобы пользователь успевал просматривать происходящие над массивом изменения. В режиме работы алгоритма кнопки находятся в следующем состоянии:
• кнопка один доступна, отображается надпись «Стоп»;
• кнопка два доступна, отображается надпись «Пауза».
на рисунке в этом состоянии находится сортировка «Вставка».
При работающем алгоритме сортировки пользователь может нажать на любую из двух кнопок. Если пользователь нажимает на кнопку «Пауза», то работа алгоритма сортировки приостанавливается, с возможностью дальнейшего продолжения работы алгоритма, с места остановки. В этом случае кнопки для алгоритма сортировки находятся в следующем состоянии:
• кнопка один доступна, отображается надпись «Стоп»;
• кнопка два недоступна, отображается надпись «Продолжить».
на рисунке в этом состоянии находится сортировка «Выбор».
Если пользователь при приостановленной работе алгоритма нажимает на кнопку «Продолжить» то работа алгоритма возобновляется.
При нажатии на кнопку «Стоп» алгоритм останавливает свою работу, и переходит в своё первоначальное состояние, т.е. в состояние которое было у алгоритма в момент запуска приложения.
Если алгоритм сортировки отработал до конца, то визуальное отображение массива остаётся отсортированным, а кнопки переходят в своё первоначальное состояние.
Необходимо подсвечивать различными цветами отсортированную и не отсортированную часть массива, где это возможно.
Помогите с реализацией задания, хотя бы с графическим интерфейсом и с чего начать это всё делать.