快速排序
核心:不断切片,使左侧小于基准值,右侧大于基准值,递归
public void QuickSort(int[] arr, int first, int last)
{
//1.左右碰头结束
if (first >= last) return;
int i = first;
int j = last;
//2.这里选最后一个位置为基准值
int k = arr[last];
while(i < j)
{
//3.左往右走,找到大于k的值塞到右边坑位
while (i < j && arr[i] <= k)
{
i++;
}
arr[j] = arr[i];
//4.右往左走,找到小于k的值塞到左边坑位
while (i < j && arr[j] >= k)
{
j--;
}
arr[i] = arr[j];
}
//5.把基准回归,此时i,j已相等
arr[j] = k;
//6.分别递归处理两侧的序列
QuickSort(arr, first, j - 1);
QuickSort(arr, j + 1, last);
}
大总结
希望我这篇文章能够对你有帮助