R
Rick
I think I am going into an infinite loop with my quicksort
implementation.
Here is my call:
quicksort (list);
And here is my quicksort methods:
static void quicksort (int a[], int lo0, int hi0)
{
int lo = lo0; // low index
int hi = hi0; // high index
int mid = a[(lo + hi) / 2]; // middle index value
// partition
while (lo < hi)
{
while (lo < hi && a[lo] < mid)
{
lo++;
}
while (lo < hi && a[hi] >= mid)
{
hi--;
}
if (lo < hi)
{
int T = a[lo];
a[lo] = a[hi];
a[hi] = T;
}
}
if (hi < lo)
{
int T = hi;
hi = lo;
lo = T;
}
// recursion
quicksort(a, lo0, lo);
quicksort(a, lo == lo0 ? lo + 1 : lo, hi0);
}
public void quicksort(int a[])
{
quicksort(a, 0, a.length - 1);
}
implementation.
Here is my call:
quicksort (list);
And here is my quicksort methods:
static void quicksort (int a[], int lo0, int hi0)
{
int lo = lo0; // low index
int hi = hi0; // high index
int mid = a[(lo + hi) / 2]; // middle index value
// partition
while (lo < hi)
{
while (lo < hi && a[lo] < mid)
{
lo++;
}
while (lo < hi && a[hi] >= mid)
{
hi--;
}
if (lo < hi)
{
int T = a[lo];
a[lo] = a[hi];
a[hi] = T;
}
}
if (hi < lo)
{
int T = hi;
hi = lo;
lo = T;
}
// recursion
quicksort(a, lo0, lo);
quicksort(a, lo == lo0 ? lo + 1 : lo, hi0);
}
public void quicksort(int a[])
{
quicksort(a, 0, a.length - 1);
}