快速排序
程序员文章站
2022-03-24 13:24:13
...
选左侧第一个数为基准数,从右侧开始找一个比基准数小的数,从左侧开始找一个比其大的数,二者调换,再接着找,直到两向相遇,则将相遇点的数据与基准数调换;接着对基准数两侧的数据进行与上述相同的操作,进行递归处理。
void fastSort(vector<int>& nums,int left,int right){
if(left>=right) return;
if(nums.size()<=1) return;
int pilot = nums[left];
int leftIndex = left;
int rightIndex = right;
while(leftIndex<rightIndex){
while(leftIndex<rightIndex){
if(pilot<=nums[rightIndex]) rightIndex--;
else{
nums[leftIndex] = nums[rightIndex];
leftIndex++;
break;
}
}
while(leftIndex<rightIndex){
if(pilot>=nums[leftIndex]) leftIndex++;
else{
nums[rightIndex] = nums[leftIndex];
rightIndex--;
break;
}
}
}
nums[leftIndex] = pilot;
fastSort(nums,left,leftIndex-1);
fastSort(nums,rightIndex+1,right);
}
上一篇: 喝茶配的小食品有哪些
下一篇: 前秦变态君主苻生,竟强逼路人当朝交合