class { public: voidwiggleSort(std::vector<int>& nums){ int n = nums.size(); auto midIterator = nums.begin() + (n >> 1); std::nth_element(nums.begin(), midIterator, nums.end()); int midValue = *midIterator;
int index = 0; int left = 0; int right = n - 1; while(index <= right) { if(nums[reIndex(index)] > midValue) { std::swap(nums[reIndex(left++)], nums[reIndex(index++)]); } elseif(nums[reIndex(index)] < midValue) { std::swap(nums[reIndex(right--)], nums[reIndex(index)]); } else { index++; } }
近期评论