快速排序
// 格式化后://backward --> forwart <---inline void moveNumber(vector<int>& nums,int& i,int& j,int baseNum,bool backward){while(i < j && backward ? (nums[i] < baseNum) :(nums[j] > baseNum))backward ? ++i:--j;if(i < j)nums[backward?j:i] = nums[backward?i:j];}void sort(vector<int>& nums,int begin,int end){if(begin >= end)return;const int baseNum = nums[begin];int i = begin;int j = end;while(i < j)for(auto state:{false,true})moveNumber(nums,i,j,baseNum,state);nums[i] = baseNum;sort(nums,begin,i - 1);sort(nums,i+1 ,end);}// 默认解法:void sort(vector<int>& nums,int begin,int end){if(begin >= end)return;int baseNum = nums[begin];int i = begin;int j = end;while(i < j){while(i < j && nums[j] > baseNum)--j;if(i < j)nums[i] = nums[j];while(i < j && nums[i] < baseNum)++i;if(i < j)nums[j] = nums[i];}nums[i] = baseNum;sort(nums,begin,i - 1);sort(nums,i+1 ,end);}
作者:admin 创建时间:2022-07-28 17:42
更新时间:2022-07-28 17:47
更新时间:2022-07-28 17:47