我們學數據結構的時候會學到過多種排序算法,基本上都是基於比較的排序,下面這一排序算法的思想會讓你大吃一驚:
public class SleepSort { public static void main(String[] args) { int[] ints = {1,4,7,3,8,9,2,6,5}; SortThread[] sortThreads = new SortThread[ints.length]; for (int i = 0; i < sortThreads.length; i++) { sortThreads[i] = new SortThread(ints[i]); } for (int i = 0; i < sortThreads.length; i++) { sortThreads[i].start(); } } } class SortThread extends Thread{ int ms = 0; public SortThread(int ms){ this.ms = ms; } public void run(){ try { sleep(ms*10+10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(ms); } }
雖然此算法存在諸多不足:不能存在負數,數據過大導致排序花時間過長,數據過多導致排序的誤差過大等。貌似只能玩玩,但其突破傳統,發散的思維確實非常值得學習的