文章目录
- 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);
  }
}- 参考:八分半时间带你了解快速排序(思路讲解加代码展示)
                










