超过了迭代快速排序执行时间限制,未执行

时间:2019-05-15 19:33:58

标签: c# algorithm sorting quicksort

我需要迭代快速排序,但是我不知道我在哪里出错。我没有使用递归,而是使用了“堆栈”数组,而且我不知道为什么这段代码没有运行。 我应该如何诊断此代码?

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;
            }
        }
    }

0 个答案:

没有答案