Java中3路排序的问题

时间:2013-08-11 22:31:44

标签: java arrays sorting

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

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空行,数组中的正数。

1 个答案:

答案 0 :(得分:1)

填充数组的循环不正确:

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

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