Java Reference
In-Depth Information
public class
SelectionSort
{
public static void
sort(
double
[] a,
int
begin,
int
end)
{
if
((end
−
begin) >= 1)
{
int splitPoint = split(a, begin, end);
sort(a, begin, splitPoint);
sort(a, splitPoint + 1, end);
join(a, begin, splitPoint, end);
}
//else sorting one (or fewer) elements
//so do nothing.
}
private static int
split(
double
[] a,
int
begin,
int
end)
{
int
index = indexOfSmallest(begin, a, end);
interchange(begin,index, a);
return
begin;
}
private static void
join(
double
[] a,
int
begin,
int
splitPoint,
int
end)
{
//Nothing to do.
}
private static int
indexOfSmallest(
int
startIndex,
double
[] a,
int
endIndex)
{
double
min = a[startIndex];
int
indexOfMin = startIndex;
int
index;
for
(index = startIndex + 1;
index < endIndex; index++)
if
(a[index] < min)
{
min = a[index];
indexOfMin = index;
//min is smallest of a[startIndex]
//through a[index]
}
return
indexOfMin;
}