if(changeFlag)
{
for( m = 0; m < mSort.maxLen; m ++ )
{
System.out.print( mSort.arr[ m ] + " " );
}
System.out.println( "" );
}
后加上changeFlag = false;
不然,该次排列的以后步骤无论有否变化,都将显示排列的内容。
{
for( m = 0; m < mSort.maxLen; m ++ )
{
System.out.print( mSort.arr[ m ] + " " );
}
System.out.println( "" );
}
后加上changeFlag = false;
不然,该次排列的以后步骤无论有否变化,都将显示排列的内容。
for( k = 0; k < j - 1; k ++ )
{
if( mSort.arr[ k + 1 ] < mSort.arr[ k ] )
{
temp = mSort.arr[ k + 1 ];
mSort.arr[ k + 1 ] = mSort.arr[ k ];
mSort.arr[ k ] = temp;
changeFlag = true;
}
if(changeFlag)
{
for( m = 0; m < mSort.maxLen; m ++ )
{
System.out.print( mSort.arr[ m ] + " " );
}
System.out.println( "" );
}
}
两个错误:1、 if(changeFlag)
{
for( m = 0; m < mSort.maxLen; m ++ )
{
System.out.print( mSort.arr[ m ] + " " );
}
System.out.println( "" );
}
放的位置不对,在一次排序中每两个数顺序不对时就要输出一次,累不累啊。 2、
changeFlag = false;位置不对
你放的地方这样的效果:3 2 5 12 11 4一次排序时只要第一次changeFlag = true后每次都是true,不管要不要排都会输出,这也就是
2 3 5 11 4 12
2 3 5 11 4 12
2 3 5 11 4 12
的原因了