Sorting algorithms/Quicksort: Difference between revisions

Content deleted Content added
→‎{{header|BASIC}}: Added XBasic.
Miks1965 (talk | contribs)
 
(4 intermediate revisions by 4 users not shown)
Line 4,780:
 
=={{header|EasyLang}}==
<syntaxhighlight lang="text">
proc qsort left right . d[] .
whileif left <>= right
# partition return
.
piv = d[left]
mid = left
for i = left + 1 to right
if d[i] < pivd[left]
mid += 1
swap d[i] d[mid]
.
.
swap d[left] d[mid]
#
if mid < (right + left) / 2
qsort left mid - 1 d[]
left = mid + 1
else
qsort mid + 1 right d[]
right = mid - 1
.
.
swap d[left] d[mid]
qsort left mid - 1 d[]
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
pivi += d[left]1;
until a[i]>=x;
repeat
j -= .1;
until a[j]<=x;
if i<j then
Swap(a[i],a[j])
#else
begin
Result := j;
elseexit;
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}}==