Sorting algorithms/Quicksort: Difference between revisions
Content added Content deleted
Line 2,782: | Line 2,782: | ||
=={{header|Nimrod}}== |
=={{header|Nimrod}}== |
||
<lang nimrod> |
|||
<lang python>proc QuickSort(list: seq[int]): seq[int] = |
|||
proc quickSort[T](a: var seq[T], inl = 0, inr = -1) = |
|||
⚫ | |||
var r = if inr >= 0: inr else: a.high |
|||
var l = inl |
|||
let n = r - l + 1 |
|||
if n < 2: return |
|||
let p = a[l + 3 * n div 4] |
|||
while l <= r: |
|||
var right: seq[int] = @[] |
|||
⚫ | |||
for i in low(list)+1..high(list): |
|||
inc l |
|||
continue |
|||
if a[r] > p: |
|||
dec r |
|||
continue |
|||
if l <= 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}}== |
=={{header|Objeck}}== |