下面是C#实现快速排序算法的完整攻略:
快速排序算法简介
快速排序算法是一种高效的排序算法,它的时间复杂度为O(nlogn)。快速排序算法的基本思想是,通过一趟排序将待排序列分隔成独立的两部分,其中一部分的所有数据都比另外一部分小,然后再对这两部分继续进行排序,以达到整个序列有序的目的。
快速排序算法实现步骤
快速排序算法的实现步骤如下:
- 选择一个中间值,将基准值设为中间值
- 将序列分成左右两部分,左边部分所有元素都小于基准值,右边部分所有元素都大于基准值
- 递归对左右两部分进行快速排序
下面是C#实现快速排序算法的代码:
public static void QuickSort(int[] arr, int left, int right)
{
if (left >= right) // 如果左指针大于等于右指针,说明已经排好序了
{
return;
}
int pivot = arr[(left + right) / 2]; // 选择中间值作为基准值
int i = left;
int j = right;
while (i <= j)
{
while (arr[i] < pivot) // 从左往右找到第一个大于等于基准值的元素
{
i++;
}
while (arr[j] > pivot) // 从右往左找到第一个小于等于基准值的元素
{
j--;
}
if (i <= j) // 如果左指针小于等于右指针,说明还没排完
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
QuickSort(arr, left, j); // 递归排序左边部分
QuickSort(arr, i, right); // 递归排序右边部分
}
示例说明
下面是两条示例说明:
示例1
假设有一个数组arr,元素为{5, 3, 2, 4, 1},要求用快速排序算法进行排序,最终输出结果。
int[] arr = { 5, 3, 2, 4, 1 };
QuickSort(arr, 0, arr.Length - 1);
foreach (int value in arr)
{
Console.WriteLine(value);
}
输出结果为:
1
2
3
4
5
示例2
假设有一个数组arr,元素为{99, 88, 77, 66, 55, 44, 33, 22, 11},要求用快速排序算法进行排序,最终输出结果。
int[] arr = { 99, 88, 77, 66, 55, 44, 33, 22, 11 };
QuickSort(arr, 0, arr.Length - 1);
foreach (int value in arr)
{
Console.WriteLine(value);
}
输出结果为:
11
22
33
44
55
66
77
88
99
以上就是C#实现快速排序算法的完整攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现快速排序算法 - Python技术站