【排序算法--睡眠排序】

我们学数据结构的时候会学到多种排序算法,基本上都是基于比较的排序,下面的这个windows xp系统下载排序算法并不是基于比较,确切的说它是基于cpu调度算法实现的,这个算法的作者称之为--睡眠排序。

  它的基本思想是,对一组数据进行排序,不能存在负数值,这个数是多大,那么就在线程里睡眠它的10倍再加10,不是睡眠和它的数值一样大的原因是,当数值太小时,误差太大,睡眠的时间不比输出的时间少,那么就会存在不正确的输出结果。

  下面给出JAVA版本的代码,其中包含注释:

  [java]

  public class SleepSort {

  public static void main(String[] args) {

  int[] ints = {1,4,7,3,8,9,0,2,6,5,3,6,9};

  //有多少个元素定义多少个线程

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

  }

  }

posted @ 2013-07-27 09:43  豆豆逗逗  阅读(423)  评论(0编辑  收藏  举报