睡眠排序法(java)

我们学数据结构的时候会学到过多种排序算法,基本上都是基于比较的排序,下面这一排序算法的思想会让你大吃一惊


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);
    }
}

虽然此算法存在诸多不足:不能存在负数,数据过大导致排序花时间过长数据过多导致排序的误差过大等。貌似只能玩玩,但其突破传统,发散的思维确实非常值得学习的

你可能感兴趣的:(java,排序算法,睡眠排序,SleepSort)