C#快速排序原理讲解及代码块
程序员文章站
2022-03-24 13:16:55
...
1.原理讲解
快速排序原理讲解
2.代码块
public class QuickSortAlgorithm
{
static int index = 0;
public static void QuickSort(int[] a, int low, int high)
{
if (low >= high)
{
return;
}
int pivot = QuickSortOnce(a, low, high);//输出每一次排序。
//对枢轴左端进行排序。
QuickSort(a, low, pivot - 1);
//对枢轴右端进行排序。
QuickSort(a, pivot + 1, high);
Console.WriteLine("快速排序次数统计" + index);
}
public static int QuickSortOnce(int[] a, int low, int high)
{
//将首个元素作为枢轴。
int pivot = a[low];
int i = low, j = high;
while (i < j)
{
//从右往左,寻找首个小于povit的元素。
while (a[j] >= pivot && i < j)
{
index++;
j--;
}
//执行到此,j一定指向从右端起首个小于或等于povit的元素。执行替换。
a[i] = a[j];
//从左往右,寻找首个大于povit的元素。
while (a[i] <= pivot && i < j)
{
index++;
i++;
}
////执行到此,j一定指向从右端起首个大于或等于povit的元素。执行替换。
a[j] = a[i];
}
//退出while循环,执行至此,必定是i==j的情况。i(或j)指向的既是枢轴的位置,定位该趟排序的枢轴并将该位置返回。
a[i] = pivot;
return i;
}
}
下一篇: 龙骨可以当排骨做吗?龙骨和排骨哪个好?