您好我认为在以下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空行,数组中的正数。
答案 0 :(得分:1)
填充数组的循环不正确:
for (int a = 25; a<= -24; a--)
变量a
从25
开始,不小于或等于-24
,因此循环永远不会执行。您应该使用>=
。