见过的最扯的排序算法

Eraserpro 2011-06-23 06:15:59
别的地方看过,感觉挺好玩,转之
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);
}
}


还有JavaScript版的,比较短:
function sleepsort() {
for (var i = 0, il = arguments.length; i < il; i++) {
(function(args, index) {
setTimeout(function() {
document.body.innerHTML += args[index] + ', ';
}, args[index]);
}(arguments, i));
}
};


不解释,BH的程序不需要理由……
...全文
10337 250 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
250 条回复
切换为时间正序
请发表友善的回复…
发表回复
逍遥jc 2013-12-12
  • 打赏
  • 举报
回复
这个方法真心犀利。估计搞个排序大赛。没准还能拿个最佳创意奖呢。
分享才是永恒 2013-12-10
  • 打赏
  • 举报
回复
神一般的思路
摆烂办不到 2013-04-28
  • 打赏
  • 举报
回复
的确有bug 调整休眠时间或者调整数组大小,结果就可能有差错,不过这种思路,我只能说,膜拜啊!
anshiny 2013-04-28
  • 打赏
  • 举报
回复
不是一般的牛X
lyp907093825 2013-04-28
  • 打赏
  • 举报
回复
亏想得出来
jaywzc 2013-04-28
  • 打赏
  • 举报
回复
适合简单排序。。。目测循环的时间消耗大于进行休眠时间就会出错。。。。
中华雪碧 2013-04-27
  • 打赏
  • 举报
回复
牛逼。。。。
rumlee 2013-04-27
  • 打赏
  • 举报
回复
方法虽有点新颖,虽然绝大部分情况下,结果都是正确的,但是不能够确保每次结果都是正确的,存在一定的随机性。
朴朴乐 2013-04-27
  • 打赏
  • 举报
回复
function sleepsort() { for (var i = 0, il = arguments.length; i < il; i++) { (function(args, index) { setTimeout(function() { document.body.innerHTML += args[index] + ', '; }, args[index]); }(arguments, i)); } }; sleepsort.call('10','11','34','42','33','59') ; 恶心,错的不说,写的很恶心。第一个没排出来,最后还有个逗号。
wo111180611 2013-04-27
  • 打赏
  • 举报
回复
引用 10 楼 D_east 的回复:
不好意思.我是菜鸟.sortThreads[i].start();这句是什么意思?
启动第i个排序县城
跳蚤图 2013-04-26
  • 打赏
  • 举报
回复
哇塞,我运行5次,结果都是对的
jackpay 2013-04-26
  • 打赏
  • 举报
回复
另辟蹊径啊
facc 2013-04-26
  • 打赏
  • 举报
回复
引用 17 楼 alex_fantasy 的回复:
Wouldn’t work if the thread doesn’t start very close to each other. you can't ensure each thread start in a very short time.
全部线程启动后使用wait(),然后使用notifyAll就没问题了
facc 2013-04-26
  • 打赏
  • 举报
回复
引用 16 楼 qybao 的回复:
挺有创意的
全部线程启动后使用wait(),然后使用notifyAll就没问题了
livend 2013-04-25
  • 打赏
  • 举报
回复
jspxnet 2013-04-25
  • 打赏
  • 举报
回复
不同的程序实用不同的范围,这个用在后台线程慢慢排序也不错
GodDices 2013-04-25
  • 打赏
  • 举报
回复
楼主有做喜剧演员的天赋
千泷先生 2013-04-24
  • 打赏
  • 举报
回复
算法不错,略显猥琐,如果需要排序的元素多一点,元素之间的差距小一点,还能保证对吧,大元素多睡一会,小的先输出,牛翻天了
绝对在乎妮 2013-04-24
  • 打赏
  • 举报
回复
其实应该把

//sleep(ms*10+10);
sleep(ms*1000+10);
1到10的效果就更明显了。。。再大的数的话,请去找作者
绝对在乎妮 2013-04-24
  • 打赏
  • 举报
回复
世人们,蝼蚁们,彪悍的程序猿强悍的代码。。。不需要解释!
加载更多回复(224)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧