#include<iostream>
using namespace std;
#include<vector>
//快速排序
class quicksort_Solution
{
public:
void quicksort(int left, int right, vector<int>& nums)
{
int i, j, t, temp;
if (left > right)
return;
temp = nums[left];//temp中就是基准数
i = left;
j = right;
while (i != j)
{
//顺序很重要,要先从右往左找
while (nums[j] >= temp && i < j)
j--;
//再从左往右走
while (nums[i] <= temp && i < j)
i++;
//交换两个数在数组中的位置
if (i < j)//如果i,j没有相遇
{
t = nums[i];
nums[i] = nums[j];
nums[j] = t;
}
}
//最终将基准数归位
nums[left] = nums[i];
nums[i] = temp;
quicksort(left, i - 1, nums); //继续处理左边的,这里是一个递归的过程
quicksort(i + 1, right, nums);//继续处理右边的,这里是一个递归的过程
return;
}
vector<int> sortColors(vector<int>& nums)
{
int left = 0, right = nums.size() - 1;
quicksort(left, right, nums);
return nums;
}
};
void myPrint(vector<int>&nums)
{
for (int i = 0; i < nums.size(); i++)
{
cout << nums[i] << " ";
}
cout << endl;
}
int main()
{
vector<int>nums = { 2, 0, 2, 1, 1, 0 };
quicksort_Solution s;
auto a = s.sortColors(nums);
myPrint(a);
system("pause");
return 0;
}