睡眠排序演算法是一種比較另類有趣的排序演算法,其核心思想與cpu排程機制相關,是通過多執行緒讓每乙個資料元素睡眠一定規律的時間,睡眠時間要和自身資料大小存在一定的規律,睡眠時間短的先進行輸出,睡眠長的後輸出,從而實現資料有序輸出。
存在缺點:
①若睡眠時間之間相差很小時,容易出現誤差,為了減小誤差,一般需要放大睡眠倍數;
②因為睡眠時間和資料大小有直接關係,因此資料不能太大 ,若資料很大時,睡眠時間要很久,程式執行時間很長;
③睡眠時間不能為負數,如果排序資料中存在負數,需要按照一定的規律把對應的睡眠時間轉換成正數,比如說在設定睡眠時間時,把每一項都加上乙個正數(該正數的絕對值要比最小負數的絕對值要大)。
public static class sleepthread extends thread
@override
public void run() catch (exception e)
system.out.print(num + " ");
}}public static void main(string args) ;
system.out.print(" 原始資料排列:");
for (int i : num)
system.out.print("\n排序後資料排列:");
sleepthread array = new sleepthread[num.length];
for (int i = 0; i < array.length; i++)
}
睡眠排序法,當娛樂就好
此排序法為從知乎看,定義為睡眠排序法,有誤差性實用性不大 整數陣列排序 public class arraysort implements runnable 睡眠排序法 誰先醒來誰當頭,有誤差的可能性 param args public static void main string args fo...
睡眠排序法 乙個不準確的排序方法
今天看到乙個非常玄奇的排序方法,大致上類似於桶排序,但是不是特別可靠,就是睡眠排序法,額,簡單的 如下 from time import sleep items 2,4,10,2,1,7 睡眠排序演算法 複雜的 如下 抄別人的 import time import random from threa...
搞笑排序之睡眠排序
乙個程式的執行時間受多種因素影響,因此它的返回結果不一定正確 構造n個執行緒,它們和這n個數一一對應。初始化後,執行緒們開始睡眠,等到對應的數那麼多個時間單位後各自醒來,然後輸出它對應的數。這樣最小的數對應的執行緒最早醒來,這個數最早被輸出。等所有執行緒都醒來,排序就結束了 package com....