文章目录
- 1.思路
- 2.代码
1.思路
快速排序的思想是:分治思想
- 以升序为例,pivote的下标通过get_mid获得
- 从int数组中选择一个下标为pivot的值,使用双指针方法,然后将比pivot大的放到右边,比pivot小的值放到左边
- 然后对pivote左边的子数组和对pivote右边的子数组进行递归调用,最终达到升序的结果
- 代码框架如下:
2.代码
int get_mid(vector<int>& vec, int left, int right){
int pivote=vec[left];
while (left < right)
{
while (vec[right] >= pivote && left < right) right--;
vec[left] = vec[right];
while (vec[left] <= pivote && left < right) left++;
vec[right] = vec[left];
}
vec[left] = pivote;
return left;
}
void fastsort(vector<int>& vec, int left, int right){
if (left < right){
int mid=get_mid(vec,left,right);
fastsort(vec,left,mid-1);
fastsort(vec,mid+1,right);
}
}
- 参考:八分半时间带你了解快速排序(思路讲解加代码展示)