事情是这样的,前段时间一位前辈给我看了一个排序算法,我的第一反应是想出这个算法的人是个大才!
先看代码
public class Test01 {
public static void main(String[] args) {
int[] arr = {2, 43, 23, 30, 9};
sleepSort(arr);
}
/**
* 睡眠排序
* @param arr
*/
public static void sleepSort(int[] arr) {
int len = arr.length;
for (int i = 0; i < len; i++) {
final int flag=arr[i];
new Thread(() -> {
try {
Thread.sleep(flag);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(flag);
}).start();
}
}
}
运行结果:
先不说别的,震惊,这代码是正经人想的出来的?
分析一波:有多少个元素排序就有多少个线程睡眠,先睡结束的先打印,从而实现从小到大的排序。
当时就在想:把Thread.sleep(flag);改一下:
//Thread.sleep(flag);
Thread.sleep(flag/2); //直接效率翻倍;flag/10 就直接提升10倍【手动滑稽】
效率是真的快,电脑也是真的费。看看就好千万别用