Sleep sort: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m Bot: inserimento portale (via JWB) |
||
(32 versioni intermedie di 17 utenti non mostrate) | |||
Riga 1:
{{S|linguaggi di programmazione}}
'''Sleep sort'''(in italiano: ordinamento assonnato) è un algoritmo di ordinamento basato sul tempo.▼
{{Algoritmo|classe=[[Algoritmo di ordinamento]]|struttura dati=[[Array]]|tempo migliore=<math>O(max(input))</math>|tempo peggiore=<math>O(n^2+max(input))</math>|immagine=Sleep Sort Animation.gif|didascalia=Esempio di sleep sort ordina un array di interi casuali. L'asse orizzontale è l'indice dell'array e l'asse verticale è l'intero.}}
▲'''Sleep sort''' (in italiano: ordinamento assonnato) è un [[algoritmo di ordinamento]] basato sul tempo.
''Sleep sort'' lavora associando un contatore ad ogni elemento da ordinare.
I contatori sono poi decrementati alla stessa velocità.
Quando un dato contatore finisce, l'elemento associato viene aggiunto alla fine della lista.
Può essere implementato utilizzando i timer del sistema operativo, per esempio facendo un fork di un processo separato per ogni elemento, o più semplicemente utilizzano un vettore di contatori.
== Codice ==
=== Bash ===
<syntaxhighlight lang ="bash">
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
</syntaxhighlight>
=== Python ===
<syntaxhighlight lang="python">
from time import sleep
from threading import Timer
Riga 31 ⟶ 47:
sleepsort([333, 222 ,112, 777, 901, 455, 256, 313, 125, 625, 825, 999, 316])
</syntaxhighlight>'''JAVA'''<syntaxhighlight lang="java">
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);
}
}
</syntaxhighlight>
== Voci correlate ==
{{Ordinamento}}
{{Portale|informatica}}
▲[[Categoria: Algoritmi di ordinamento]]
[[Categoria:Algoritmi di ordinamento]]
|