嗨,我认为我的 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 个空白行,数组中的正数。