0
点赞
收藏
分享

微信扫一扫

常见排序算法之快速排序


文章目录

  • ​​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);
}

}

  • 参考:​​八分半时间带你了解快速排序(思路讲解加代码展示)​​


举报

相关推荐

0 条评论