Implementazioni di algoritmi/Quicksort: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Correzione elemento pivot. L'elemento pivot è "in", per cui l'elemento che va confrontato è v[in].
Etichetta: Annulla
m Update syntaxhighlight tags - remove use of deprecated <source> tags
 
Riga 6:
 
===[[w:linguaggio C|C]]===
<sourcesyntaxhighlight lang="C">
void sort(int array[], int begin, int end) {
int pivot, l, r;
Riga 26:
}
}
</syntaxhighlight>
</source>
 
//attenzione, il programma non è completo!
 
===[[w:C++|C++]]===
<sourcesyntaxhighlight lang="Cpp">
#include <algorithm>
#include <iterator>
Riga 45:
}
}
</syntaxhighlight>
</source>
 
=== [[w:Haskell|Haskell]] ===
Riga 62:
Questo esempio mostra un quicksort generico, piuttosto che uno che funzioni con gli interi o con le stringhe.
 
<sourcesyntaxhighlight lang="java">
import java.util.Comparator;
import java.util.Random;
Riga 98:
// ATTENZIONE NON FUNZIONA! ATTENZIONE NON FUNZIONA! ATTENZIONE NON FUNZIONA!
// ATTENZIONE NON FUNZIONA! ATTENZIONE NON FUNZIONA! ATTENZIONE NON FUNZIONA!
</syntaxhighlight>
</source>
 
Ecco un algoritmo funzionante solo con numeri interi :
<sourcesyntaxhighlight lang="java">
// ATTENZIONE : per l'avvio fin deve essere pari a v.length-1
public void QuickSort( int [] v , int in , int fin ){
Riga 134:
return i-1;
}
</syntaxhighlight>
</source>
 
=== [[w:Joy_(programmazione)|Joy]] ===
Riga 146:
===[[w:Lisp|Lisp]]===
 
<sourcesyntaxhighlight lang="Lisp">
 
(defun qsort (lst cmp / x y l e g)
Riga 165:
)
)
</syntaxhighlight>
</source>
 
===[[w:Pascal|Pascal]]===
 
<sourcesyntaxhighlight lang="pascal">
procedure pQuickSort(var A: array of integer; iLo, iHi: integer);
var Lo, Hi, Pivot, T: Integer;
Riga 192:
end;
 
</syntaxhighlight>
</source>
 
=== [[w:Perl|Perl]] ===
 
<sourcesyntaxhighlight lang="perl">
sub qsort {
@_ or return ();
Riga 202:
(qsort(grep $_ < $p, @_), $p, qsort(grep $_ >= $p, @_));
}
</syntaxhighlight>
</source>
 
=== [[w:Perl|Perl 6]] ===
 
<sourcesyntaxhighlight lang="perl">
multi quicksort () { () }
multi quicksort (*$x, *@xs) {
Riga 213:
(@pre.quicksort, $x, @post.quicksort);
}
</syntaxhighlight>
</source>
 
=== [[w:Python|Python]] ===
 
Ordinamento in place:
<sourcesyntaxhighlight lang="python">
def partition(array, begin, end, cmp):
pivot=array[end]
Riga 236:
sort(array, cmp, i+1, end)
 
</syntaxhighlight>
</source>
 
Algoritmo funzionale:
<sourcesyntaxhighlight lang="python">
def quicksort(lista):
if len(lista)<=1: return lista
Riga 246:
[pivot] +
quicksort([e for e in lista[1:] if e >= pivot]))
</syntaxhighlight>
</source>
 
=== [[w:Prolog|Prolog]] ===
Riga 267:
 
===[[w:Ruby|Ruby]]===
<sourcesyntaxhighlight lang="ruby">
def qsort(list)
return [] if list.size == 0
Riga 274:
qsort(less) + [x] + qsort(more)
end
</syntaxhighlight>
</source>
 
=== [[w:Standard ML|SML]] ===
Riga 293:
=== [[w:Lua|Lua]] ===
 
<sourcesyntaxhighlight lang="lua">
function quickSort(a,ini,u)
lo= ini
Riga 313:
return a
end
</syntaxhighlight>
</source>
 
== Altri progetti ==