java睡眠排序算法示例實現(xiàn)
無聊逛論壇,發(fā)現(xiàn)了這張圖

真是厲害啊,這排序, 既有多線程,又有排序,還有l(wèi)ambda表達式,但是這是C#版本,作為一個入坑的Java愛好者,當(dāng)然要去試試Java版本了,廢話不多說,上代碼
/**
* @author Marblog
*/
public class Main {
public static void main(String[] args) {
int[] nums = new int[]{235, 233, 110, 789, 5, 0, 1};
for (int item : nums) {
new Thread(() -> {
try {
Thread.sleep(item);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(item);
}).start();
}
}
}代碼很粗略,很多bug。比如
(1) 搞不定負數(shù)。
(2)比如輸入數(shù)據(jù)很相近時會有誤差
(3)輸入數(shù)據(jù)很多時,這些線程不能看作是同時啟動等等...
對于(1),可以用一個在恒正的函數(shù)把輸入映射成時間;
(2),可以乘個系數(shù),放大數(shù)據(jù)間的差,但是依然搞不定重復(fù)的數(shù)據(jù);
(3),試著讓算法在多個物理核上真正的并行起來
運行結(jié)果

這是一種很神經(jīng)的算法,沒有十年腦血栓想不出來
原理就是開很多線程,線程數(shù)量等于你要排序的元素數(shù)量,讓他們按照原數(shù)組順序輸出,過程中讓線程睡眠,睡的時長跟元素自身大小對應(yīng),所以越大睡的越久
以上就是java睡眠排序算法示例實現(xiàn)的詳細內(nèi)容,更多關(guān)于java睡眠排序的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
引入mybatis-plus報 Invalid bound statement錯誤問題的解決方法
這篇文章主要介紹了引入mybatis-plus報 Invalid bound statement錯誤問題的解決方法,需要的朋友可以參考下2020-05-05
Java使用責(zé)任鏈模式處理學(xué)生請假問題詳解
這篇文章主要介紹了Java使用責(zé)任鏈模式處理學(xué)生請假問題,結(jié)合實例形式詳細分析了責(zé)任鏈模式的概念、原理及Java使用責(zé)任鏈模式處理學(xué)生請假問題的相關(guān)步驟、操作技巧與相關(guān)注意事項,需要的朋友可以參考下2018-04-04
Java語言實現(xiàn)簡單FTP軟件 FTP軟件效果圖預(yù)覽之上傳功能(3)
這篇文章主要為大家詳細介紹了Java語言實現(xiàn)簡單FTP軟件,F(xiàn)TP軟件效果圖預(yù)覽之上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
你知道怎么從Python角度學(xué)習(xí)Java基礎(chǔ)
這篇文章主要為大家詳細介紹了Python角度學(xué)習(xí)Java基礎(chǔ)的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02

