我正在尝试使用此方法对整数数组进行升序排序。但是我的for循环只运行一次。
public void sortArray()
{
boolean sorted = false;
while(sorted == false)
{
int temp;
for(int i = 0; i < inArray.length - 1; i++)
{
if(inArray[i] > inArray[i + 1])
{
temp = inArray[i];
inArray[i] = inArray[i + 1];
anArray[i + 1] = temp;
}
}
sorted = true;
}
}
我知道这与我如何处理boolean标志有关,但我不确定如何修复它。如有任何建议,我们将不胜感激。提前谢谢。
发布于 2016-11-02 06:25:46
你当前总是在循环的末尾将你的排序设置为true。当然,只有在实际上没有发生重新洗牌的情况下,它才应该是真的。
确定这一点的一种方法是在while循环开始时将sorted设置为true,并在检测到数组尚未排序并进行元素切换时将其设置为false:
public void sortArray()
{
boolean sorted = false;
while(!sorted)
{
sorted = true;
int temp;
for(int i = 0; i < inArray.length - 1; i++)
{
if(inArray[i] > inArray[i + 1])
{
sorted = false; // array is not yet sorted
temp = inArray[i];
inArray[i] = inArray[i + 1];
anArray[i + 1] = temp;
}
}
}
}
https://stackoverflow.com/questions/40369529
复制相似问题