java - 我正在研究一个数组的基本排序算法,尽管解决方案有效,但我并不完全理解
问题描述
在循环期间,我对代码部分的 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;
那么它只在当前元素大于嵌套元素时进行交换,算法以这种方式交换它。对交换如何工作的一个简单解释是试着想象两个杯子,一个装满水,第二个装满咖啡,你想要交换它们。你会带一个空杯子(代表代码中的临时变量)。你把空杯子装满水,现在之前有水的杯子是空的,你把它装满咖啡。现在曾经有水的杯子装满了咖啡,而咖啡杯是空的,您将首先放入新杯子的水装满咖啡杯。我希望这能解释
推荐阅读
- python-3.x - 当 wxpython 的文件夹中不存在图像时,框架不会打开
- javascript - 一旦您的元素不再连接,如何处理“connectedCallback 可能会被调用”编码一个 Web 组件
- r - 错误:尝试使用 read.csv() 读取 csv 文件时出现“意外输入..”
- php - 使用数据库中的图像路径在 php 中显示图像
- python - TableView 小部件仅在排序后填充数据
- c++ - 如何比较c ++列表中的两个连续元素
- r - 如何编辑由使用绘图创建它的其他函数生成的 R 图?
- c# - XML 子节点读取
- python - 在 python 中使用 selenium/chromedriver 发布 Instagram 故事
- angular - fxFlex 不调整元素大小