我需要迭代快速排序,但是我不知道我在哪里出错。我没有使用递归,而是使用了“堆栈”数组,而且我不知道为什么这段代码没有运行。 我应该如何诊断此代码?
public static void swap(int[] tab, int left,int right)
{
int tmp = tab[left];
tab[left] = tab[right];
tab[right] = tmp;
}
public static int Partition(int[] tab,int left,int right)
{
int pivot = tab[right];
int i = (left - 1);
for(int j=left;j<=right-1;j++)
{
if(tab[j]<=pivot)
{
i++;
swap(tab,i, j);
}
}
swap(tab,i + 1, right);
return i + 1;
}
public static void quickSort(int[] tab,int left,int right)
{
int[] Z = new int[right - left + 1];
int top = -1;
Z[++top] = left;
Z[++top] = right;
while(top>=0)
{
right = Z[top--];
left = Z[top--];
int pivot = Partition(tab, left, right);
if(pivot-1>1)
{
Z[++top] = left;
Z[++top] = pivot - 1;
}
if(pivot+1<right)
{
Z[++top] = pivot + 1;
Z[++top] = right;
}
}
}