`
yidongkaifa
  • 浏览: 4064694 次
文章分类
社区版块
存档分类
最新评论

排序算法--睡眠排序

 
阅读更多

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

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

下面给出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);  
    }  
}  


分享到:
评论

相关推荐

    睡觉版排序算法

    * 睡觉版排序算法 * 时间复杂度,空间复杂度都是浮云啊.

    go语言睡眠排序算法实例分析

    主要介绍了go语言睡眠排序算法,实例分析了睡眠排序算法的原理与实现技巧,需要的朋友可以参考下

    大哥们我来了,睡眠排序算法!E版-易语言

    大佬们好,我是个弟弟。来自精易论坛 。 听说论坛开赛了,马不停蹄赶到,却发现已经开始一天了... 赶不上了,就这样上了!给大家安利个排序算法。(调用了鱼翅的多线程模块哦)

    sleepsort:Go中企业排序算法的实现

    基于Go 睡眠排序实现。 Go 可能是用于实现这种荒谬算法的最佳语言。 该包导出两种方法: sleepsort.IntSlice(input []int, itemDuration time.Duration) []int sleepsort.FloatSlice(input []float64, ...

    java基础案例与开发详解案例源码全

    4.4.1 算法-冒泡排序113 4.4.2 插入排序115 4.5 增强for循环116 4.6 本章练习117 第5章 5.1 面向过程的设计思想120 5.2 面向对象的设计思想120 5.3 抽象121 5.3.1 对象的理解121 5.3.2 Java抽象思想的实现122 5.4 ...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    EX 内核管理器 EX Kernel Manager 6.0.1 中文多语免费版.zip

    CPU时间:显示CPU频率使用情况和深度睡眠,并可以选择按最常用的频率排序。 更新或安装ElementalX:在您的Nexus 6P,Nexus 5X,Nexus 5,Nexus 6,Nexus 7(2013),Nexus 9,HTC One m7,HTC One m8,HTC One m9,...

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

    java核心知识点整理.pdf

    垃圾回收与算法 .................................................................................................................................. 26 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.5.1. 2.4.5.2. ...

    JAVA核心知识点整理(有效)

    标记整理算法(Mark-Compact).................................................................................................. 28 分代收集算法 ..............................................................

Global site tag (gtag.js) - Google Analytics