int Pritation(int arr[], int left, int right)
{
int tmp = a[left];
int i = left, j = right;
while (i < j)
{
while (i > j&&arr[j] >= tmp)
j--;
if(i<j)
arr[i]=arr[j];
while (i < j&&arr[i] <= tmp)
i++;
if(i<j)
arr[j]=arr[i];
}
arr[i] = tmp;
return i;
}
void QuickSort(int arr[], int left,int right)
{
stack<int> s;
int i, j;
//(注意保存顺序)先将初始状态的左右指针压栈
temp.push(right);//先存右指针
temp.push(left);//再存左指针while (!temp.empty())
{
i = temp.top();//先弹出左指针
temp.pop();
j = temp.top();//再弹出右指针
temp.pop();
if (i < j)
{
int mid = Pritation(a, i, j);
if (mid > i)
{
temp.push(mid - 1);//保存中间变量
temp.push(i); //保存中间变量
}
if (j > mid)
{
temp.push(j);
temp.push(mid + 1);
}
}
}
}