在循环期间,我对代码部分的if语句块不清楚。对于将第一个和下一个元素设置为不同的变量并设置那些正确和错误的变量的背后的思考过程,我还不太清楚,感谢您的反馈。
这是我的代码:
public void SortArray()
{
Boolean isSorted = true;
while(isSorted)
{
isSorted = false;
for(int i=0;i<ArrayOfValues.length;i++)
{
for(int j=i+1;j<ArrayOfValues.length;j++)
{
if(ArrayOfValues[i]>ArrayOfValues[j])
{
int temp = ArrayOfValues[j];
ArrayOfValues[j] = ArrayOfValues[i];
ArrayOfValues[i] = temp;
isSorted = true;
}
}
}
}
}
最佳答案
如果您的意思是此代码
int temp = ArrayOfValues[j];
ArrayOfValues[j] = ArrayOfValues[i];
ArrayOfValues[i] = temp;
那只是为了交换
当当前元素大于nest元素时,算法将以这种方式交换它。一个简单的解释如何进行交换的方法是尝试想象两个杯子,一个杯子装满水,第二个杯子装满咖啡,然后您要交换它们。您将带来一个空杯子(在代码中代表temp变量)。您将空杯子装满了水,现在之前装有水的杯子已经空了,然后将咖啡装满了。现在已经有水的杯子里装满了咖啡,而咖啡杯杯子是空的,那么您要先用新杯子中的水来填充咖啡杯。
我希望这能解释它