本文共 1357 字,大约阅读时间需要 4 分钟。
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; } }
转载地址:http://nacjn.baihongyu.com/