Sorting algorithms/Quicksort: Difference between revisions

Line 2,782:
 
=={{header|Nimrod}}==
<lang nimrod>
<lang python>proc QuickSort(list: seq[int]): seq[int] =
proc quickSort[T](a: var seq[T], inl = 0, inr = -1) =
if len(list) == 0:
var r = if inr >= return0: @[]inr else: a.high
var l = inl
let n var= pivotr =- l + list[0]1
if n < 2: return
let p var= left: seqa[int]l =+ @[3 * n div 4]
while l <= r:
var right: seq[int] = @[]
if len(list)a[l] ==< 0p:
for i in low(list)+1..high(list):
inc if list[i] <= pivot:l
left.add(list[i])continue
if elif lista[ir] > pivotp:
dec right.add(list[i])r
continue
resultif =l QuickSort(left)<= r:
swap a[l], a[r]
result.add(pivot)
inc l
result.add(QuickSort(right))</lang>
dec r
quickSort(a, inl, r)
quickSort(a, l, inr)
 
var a = @[4, 65, 2, -31, 0, 99, 2, 83, 782]
Usage:
quickSort a
<lang python>var sorted: seq[int] = QuickSort(@[5,2,1,6,2,3,1,2,123,21,54,6,1])
echo a</lang>
for i in items(sorted):
Output:
echo(i)</lang>
<pre>@[-31, 0, 2, 2, 4, 65, 83, 99, 782]</pre>
 
=={{header|Objeck}}==
Anonymous user