public static int[] sleepSort(int... args) {
final int[] sorted = new int[args.length];
final AtomicInteger index = new AtomicInteger(0);
List<Thread> threads = new ArrayList<Thread>(0);
for (int i = 0; i < args.length; i++) {
final int x = i;
Thread sorter = new Thread(() -> {
try {
Thread.sleep(args[x]);
} catch (InterruptedException ex) {
// shrug
}
sorted[index.getAndIncrement()] = args[x];
});
sorter.setDaemon(true);
sorter.start();
threads.add(sorter);
}
try {
for (Thread t : threads) { t.join(); }
} catch (InterruptedException e) {
e.printStackTrace();
}
return sorted;
}
Takes an unsorted array of integers, sorts by sleeping for the int value of each item in the array and then writing that into the resulting sorted array. Big-O analysis is... difficult.