java睡眠排序算法怎么实现
本篇內(nèi)容主要講解“java睡眠排序算法怎么實(shí)現(xiàn)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“java睡眠排序算法怎么實(shí)現(xiàn)”吧!
先看下圖:
真是厲害啊,這排序, 既有多線程,又有排序,還有l(wèi)ambda表達(dá)式,但是這是C#版本,作為一個(gè)入坑的Java愛(ài)好者,當(dāng)然要去試試Java版本了,廢話不多說(shuō),上代碼
/**
*@authorMarblog
*/
publicclassMain{
publicstaticvoidmain(String[]args){
int[]nums=newint[]{235,233,110,789,5,0,1};
for(intitem:nums){
newThread(()->{
try{
Thread.sleep(item);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println(item);
}).start();
}
}
}
代碼很粗略,很多bug。比如
(1) 搞不定負(fù)數(shù)。
(2)比如輸入數(shù)據(jù)很相近時(shí)會(huì)有誤差
(3)輸入數(shù)據(jù)很多時(shí),這些線程不能看作是同時(shí)啟動(dòng)等等...
對(duì)于(1),可以用一個(gè)在恒正的函數(shù)把輸入映射成時(shí)間;
(2),可以乘個(gè)系數(shù),放大數(shù)據(jù)間的差,但是依然搞不定重復(fù)的數(shù)據(jù);
(3),試著讓算法在多個(gè)物理核上真正的并行起來(lái)
運(yùn)行結(jié)果
這是一種很神經(jīng)的算法,沒(méi)有十年腦血栓想不出來(lái)
原理就是開很多線程,線程數(shù)量等于你要排序的元素?cái)?shù)量,讓他們按照原數(shù)組順序輸出,過(guò)程中讓線程睡眠,睡的時(shí)長(zhǎng)跟元素自身大小對(duì)應(yīng),所以越大睡的越久
總結(jié)
以上是生活随笔為你收集整理的java睡眠排序算法怎么实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows怎么对文件和文件夹进行管理
- 下一篇: solr java 全量,Solr实时创