Sorting algorithms/Quicksort: Difference between revisions
Content deleted Content added
→{{header|BASIC}}: Added XBasic. |
|||
(4 intermediate revisions by 4 users not shown) | |||
Line 4,780:
=={{header|EasyLang}}==
<syntaxhighlight
proc qsort left right . d[] .
piv = d[left]▼
.▼
▲ .
swap d[left] d[mid]▼
# ▼
qsort left mid - 1 d[]▼
else▼
qsort mid + 1 right d[]▼
.
.
.
proc sort . d[] .
Line 4,810 ⟶ 4,803:
print d[]
</syntaxhighlight>
{{out}}
<pre>
[ 4 5 26 27 29 44 55 72 77 92 ]
</pre>
=={{header|EchoLisp}}==
Line 8,264 ⟶ 8,261:
<pre>
[-50, -34, -25, -20, -10, 5, 9, 11, 13, 19, 29, 30, 35, 36]
</pre>
=={{header|PascalABC.NET}}==
<syntaxhighlight lang="delphi">
function Partition(a: array of integer; l,r: integer): integer;
begin
var i := l - 1;
var j := r + 1;
var x := a[l];
while True do
begin
repeat
until a[i]>=x;
repeat
until a[j]<=x;
if i<j then
Swap(a[i],a[j])
begin
Result := j;
end;
end;
end;
procedure QuickSort(a: array of integer; l,r: integer);
begin
if l>=r then exit;
var j := Partition(a,l,r);
QuickSort(a,l,j);
QuickSort(a,j+1,r);
end;
const n = 20;
begin
var a := ArrRandom(n);
Println('Before: ');
Println(a);
QuickSort(a,0,a.Length-1);
Println('After sorting: ');
Println(a);
end.
</syntaxhighlight>
{{out}}
<pre>
Before:
[67,95,79,96,14,56,25,9,4,56,70,62,33,52,13,12,73,19,8,72]
After sorting:
[4,8,9,12,13,14,19,25,33,52,56,56,62,67,70,72,73,79,95,96]
</pre>
Line 8,646 ⟶ 8,695:
_quicksort(array, start, right)
_quicksort(array, left, stop)</syntaxhighlight>
Functional Style (no for or while loops, constants only):
<syntaxhighlight lang="python">
def quicksort(unsorted_list):
if len(unsorted_list) == 0:
return []
pivot = unsorted_list[0]
less = list(filter(lambda x: x < pivot, unsorted_list))
same = list(filter(lambda x: x == pivot, unsorted_list))
more = list(filter(lambda x: x > pivot, unsorted_list))
return quicksort(less) + same + quicksort(more)
</syntaxhighlight>
=={{header|Qi}}==
|