-1

嗨,我认为我的 3 路排序算法在以下 Java 程序中可能存在问题,任何关于优化或更简单的建议也将不胜感激。排序的目的是先有负数,然后是零,然后是正数

class ThreeWaySort
{
public static void main(String[] args) 
{
    int location = 0;

    int[] sArray = new int[50];

    for (int a = 25; a<= -24; a--) 
    {
        sArray[location] = a;
        location++;
    }

    int i = 0; int j = 0; int k = 50;
    while (j!=k) 
    {
        if (sArray[j]==0) 
            {
                j++;
            }                           
        else if (sArray[j]<0) 
        {
            int t = sArray[i]; sArray[i] = sArray[j]; sArray[j] = t;        // case (ii)
            i++; j++;
        }
        else 
        {                                       
            k--;
            int t= sArray[j]; sArray[j] = sArray[k]; sArray[k] = t;
        }
    }

    for (int a = 0; a <= 49; a++) 
    {
        if(sArray[a] >-1)
        {
            System.out.println();
            System.out.println();
            System.out.println();
        }
        if(sArray[a] > 0)
        {
            System.out.println();
            System.out.println();
            System.out.println();
        }

        System.out.print(sArray[a] + " ");
    }
}
}

当我按原样运行程序时,它会打印出一个零,后跟三行,而不是我期望的,一行中低于零的数字,然后是 3 个空白行,然后是数组中的任何零,3 个空白行,数组中的正数。

4

1 回答 1

1

填充数组的循环不正确:

for (int a = 25; a<= -24; a--)

变量a从 开始25,不小于或等于-24,因此循环永远不会执行。你应该使用>=.

于 2013-08-11T22:37:54.483 回答