快速排序
思路,主要还是采用分治思想,对于每一小块,设置“信标”,将小于信标的放在左边,将大于信标的放在右边
int partition(vector<int>& arr, int l, int r)
{
int flag = arr[r];
int x = l;
for (int j = l; j < r; j++)
{
if (arr[j] < flag)
{
swap(arr[j], arr[x]);
x++;
}
}
swap(arr[x], arr[r]);
return x;
}
void quikeSort(vector<int>& arr, int l,int r)
{
if (l < r)
{
int q= partition(arr, l, r);
quikeSort(arr, l, q - 1);
quikeSort(arr, q + 1, r);
}
}