C# Quick Sort Algorithm Implementation
Quicksort algorithm is a sorting algorithm developed by Tony Hoare that, on average, makes O(n log n) comparisons to sort n items.
For more information about Quick Sort Algorithm:
http://en.wikipedia.org/wiki/Quicksort
Implementation and Usage:
int[] arr = new int[10]
{
1, 5, 4, 11, 20, 8, 2, 98, 90, 16
};
QuickSort(arr, 0, arr.Length - 1);
Console.WriteLine("Sorted Values:");
for (int i = 0; i < arr.Length; i++)
Console.WriteLine(arr[i]);
//Output:
//Sorted Values:
//1
//2
//4
//5
//8
//11
//16
//20
//90
//98
private void QuickSort(int[] arr, int start, int end)
{
int i;
if (start < end)
{
i = Partition(arr, start, end);
QuickSort(arr, start, i - 1);
QuickSort(arr, i + 1, end);
}
}
private int Partition(int[] arr, int start, int end)
{
int temp;
int p = arr[end];
int i = start - 1;
for (int j = start; j <= end - 1; j++)
{
if (arr[j] <= p)
{
i++;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[i + 1];
arr[i + 1] = arr[end];
arr[end] = temp;
return i + 1;
}
See Also:
Isn’t it default Call by Value in C#? so how does the array have the right values in the end?
Arrays in .NET are object on the heap, so you have a reference. That reference is passed by value, meaning that changes to the contents of the array will be seen by the caller, but reassigning the array won’t: