天才演算法 睡眠排序

2021-09-21 13:16:30 字數 580 閱讀 8763

public class sleepsort ;

//建立指定長度的執行緒陣列

sortthread sortthreads = new sortthread[arr.length];

//指定每個執行緒陣列的值

for (int i = 0; i < sortthreads.length; i++)

//開啟每個執行緒

for (int i = 0; i < sortthreads.length; i++)

} } class sortthread extends thread

public void run() catch (interruptedexception e)

//輸出該數

system.out.println(s);

} }

缺陷:

當出現乙個很大的數字,會睡眠很長時間(效率低)

當數字相差很小,會不精準(不精準)

不能處理負數(雖然可以在加上乙個正數,再進行睡眠排序,但是得不償失)

排序使用到了多執行緒,有點「殺雞焉用宰牛刀」的感覺

睡眠排序法

睡眠排序演算法是一種比較另類有趣的排序演算法,其核心思想與cpu排程機制相關,是通過多執行緒讓每乙個資料元素睡眠一定規律的時間,睡眠時間要和自身資料大小存在一定的規律,睡眠時間短的先進行輸出,睡眠長的後輸出,從而實現資料有序輸出。存在缺點 若睡眠時間之間相差很小時,容易出現誤差,為了減小誤差,一般需...

搞笑排序之睡眠排序

乙個程式的執行時間受多種因素影響,因此它的返回結果不一定正確 構造n個執行緒,它們和這n個數一一對應。初始化後,執行緒們開始睡眠,等到對應的數那麼多個時間單位後各自醒來,然後輸出它對應的數。這樣最小的數對應的執行緒最早醒來,這個數最早被輸出。等所有執行緒都醒來,排序就結束了 package com....

腦洞大開的睡眠排序

睡眠排序演算法,嘻嘻,本身只是乙個腦洞開啟的排序演算法。排序演算法一般是力求兼顧時間和空間的平衡,而睡眠排序演算法卻像是乙個玩笑,當時間和空間兩者消耗足夠大,才能達到最終精確排序的目的。實現原理 構造 n 個執行緒,它們和這 n 個數一一對應。初始化後,執行緒們開始睡眠,等到對應的數那麼多個時間單位...