Вместо использования таймера, который сортирует весь массив каждый раз, когда он вызывается, и без переписывания метода сортировки для сортировки только одного элемента при каждом вызове, вы можете сделать это.
Когда вы используете таймер, он фактическивыполнить в том же потоке, что и перекрасить парня, поэтому, если вы здесь не спите, парень не будет перекрашивать.
Вместо этого измените ваш swapper на Runnable и создайте новый потокс помощью вашего подкачки и запуска потока.
Затем, после замены и вызова перерисовки, вы можете попросить подкачку ненадолго приостановить Thread.sleep (задержка) .
JPanel не очищает себя между перерисовками, поэтому вы увидите только рост столбцов, но никогда не укорочение.Либо исправьте paintComponent, чтобы очистить графику, либо расширите JComponent.
Надеюсь, что это поможет вашему прогрессу.