QuickSort on ranges
jerome
jegaultier at gmail.com
Sat Sep 12 18:25:12 UTC 2020
Hi fellow coders, I spent a couple of hours to implement a
working, basic, quicksort. Practicing D. It finally boils down to
that (intent to use the std, not to rewrite swap, etc):
--------------------------------
import std.stdio : writeln;
import std.algorithm.sorting;
pure void quickSort(T) (T[] r)
{
if (r.length > 1)
{
size_t p = pivotPartition(r, r.length-1); //r[$-1] is
swapped to r[p]
quickSort( r[ 0..p ] );
quickSort( r[ p+1..$ ] );
}
}
void main()
{
int[] arr = [9,7, 4 , 8, 5, 3, 1];
quickSort!(int)(arr);
writeln("arr : ", arr );
}
--------------------------------
I spent some time understanding "ranges", but at the end I am
surprised I didn't use them. At the beginning I wrote something
like quickSort( Range r ) and tried randomaccessrange etc but I
didn't manage to make it work.
My question is, is there a way to write this with "ranges" as the
argument, or does this concept of slices with the [] notation
takes precedence somehow on the concept of ranges, in this
particular case?
2) how would YOU write it? Using std or not.
3) any comment/code correction welcome, I am learning :)
cheers
J
More information about the Digitalmars-d-learn
mailing list