Just tried creating a quick sort algorithm in c# to sort an array of integers - from a long distant memory.

Yes I could of just used the in built quicksort or better still just copied and pasted somebody elses off google.. But anyway, I have noticed at times will not sort the list entirely..

Just wondered where the problem is exactly?

Please bare in mind that it has been a long time since I wrote code, so dont be too brutal lol.

Code:

static public int[] quickSort(int[] sortArray, int left, int right)
{
// if there are less than 2 elements in array or comparison no need to sort
if ((sortArray.Length < 2) || ((right-left) < 2))
{
return sortArray;
}
// set random number for pivot
Random rand = new Random();
int pivotIndex = rand.Next(left, right);
int l = left, r = right;
while (l < r)
{
//leave data that is already in good in relation to index
while (sortArray[l] < sortArray[pivotIndex])
{
l++;
}
while (sortArray[r] > sortArray[pivotIndex])
{
r--;
}
// swap elements
if (sortArray[l] >= sortArray[r])
{
int temp = sortArray[l];
sortArray[l] = sortArray[r];
sortArray[r] = temp;
//continue to seek
l++;
r--;
}
}
// recursive call to sort either side of pivot
quickSort(sortArray, left, pivotIndex);
quickSort(sortArray, pivotIndex, right);
return sortArray;
}