目录
一、快速排序
//快速排序算法
void quick_sort(vector<int>& nums,int start,int end)
{
if(start < end)
{
//常规变量
int i;
//
int base=nums[start];//以要进行排序数组第0个元素为base
int left=start;//左指针
int right=end;//右指针
while(left<right)
{
//从右向左找,比base大,right--
while(left<right&&nums[right]>=base)
{
right--;
}
//找比base校,替换left所在位置的数字
nums[left]=nums[right];
//从左向右找,比base小,left++
while(left<right&&nums[left]<=base)
{
left++;
}
//比base大,替换right所在位置的数字
nums[right]=nums[left];
}
nums[left]=base;//此时left=right,用base替换这个位置的数字
// for(i=0;i<=4;i++)
// std::cout<<" i in "<<nums[i]<<std::endl;
//递归调用
quick_sort(nums,start,left-1);
quick_sort(nums,left+1,end);
}
}