Упражнения на Java: алгоритм сортировки сна
Алгоритм сортировки Java: упражнение 17 с решением
Напишите Java-программу для сортировки массива заданных неотрицательных целых чисел с помощью алгоритма сортировки сна.
В общем, спящая сортировка работает, запуская отдельную задачу для каждого сортируемого элемента, где каждая задача спит в течение интервала, соответствующего ключу сортировки элемента, а затем испускает элемент. Затем элементы собираются последовательно во времени.
Пример решения:
Java-код:
import java.util.concurrent.CountDownLatch;
public class SleepSort {
public static void sleepSortAndPrint(int[] nums) {
final CountDownLatch doneSignal = new CountDownLatch(nums.length);
for (final int num : nums) {
new Thread(new Runnable() {
public void run() {
doneSignal.countDown();
try {
doneSignal.await();
//using straight milliseconds produces unpredictable
//results with small numbers
//using 1000 here gives a nifty demonstration
Thread.sleep(num * 500);
System.out.println(num);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
public static void main(String[] args) {
int[] nums ={7, 3, 2, 1, 0, 5};
for (int i = 0; i < args.length; i++)
nums[i] = Integer.parseInt(args[i]);
sleepSortAndPrint(nums);
}
}
Пример вывода:
0 1 2 3 5 7
Блок - схема:
Редактор кода Java:
Внесите свой код и комментарии через Disqus.
Предыдущая: Напишите Java-программу для сортировки массива заданных целых чисел Алгоритм сортировки оболочки.
Далее: Напишите программу на Java для сортировки массива заданных целых чисел с помощью алгоритма сортировки Stooge.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования