当前位置: 代码迷 >> 综合 >> three-way-partition
  详细解决方案

three-way-partition

热度:5   发布时间:2024-02-12 15:05:56.0

划分之后,数组会根据mid划分为3部分,分别是<,=,>的关系,而不是传统的<=,>或者是<,>=的二划分关系。

这里的思路就是xxxx

感觉自己对i,j,k的几何关系还描述的不是很好。

建议用数组{5,5,1,2,3,5,6,7,8}和{1,2,3,4,5,5,6,7,5}来模拟一下。

void three_way_partition(vector<int>& nums,int mid){int i = 0, j = 0, k = nums.size() - 1; while(j < k){                          if(nums[j] > mid){                 swap(nums[j], nums[k]);        --k;                           }                                  else if(nums[j] < mid){            swap(nums[j], nums[i]);        ++i;                           ++j;                           }                                  else{                              ++j;                           }                                  }               
}
  相关解决方案