快速排序手撕模板(递归)

void quicksort(vector<int> arr,int left,int right)
{
   if(right<left){
       return;
   }
   int low=left;
   int high=right;
   int base=arr[low];  //以最左边的第一个为基准数
//采用双指针方法
   while(low<left){
       while(high){
           if(high<=low) break;
           if(arr[high]>base){ //右边的数大于基准数,指针就减减
               high--;
           }else{
               arr[low]=arr[high]; //与low交换位置
               break;
           }
       }
       while(low){
           if(high<=low) break;
           if(arr[low]<base){
               low--;
           }else{
               arr[high]=arr[low];
               break;
           }
       }
   }
   if(low==high){
       arr[low]=base;
   }
   quicksort(arr,left,low-1);
   quicksort(arr,low+1,right);
}
  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章