首页 > 解决方案 > 我正在研究一个数组的基本排序算法,尽管解决方案有效,但我并不完全理解

问题描述

在循环期间,我对代码部分的 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;
                }
            }


        }
    }
}

标签: javaarrayssorting

解决方案


如果你的意思是这段代码

int temp = ArrayOfValues[j];
                    ArrayOfValues[j] = ArrayOfValues[i];
                    ArrayOfValues[i] = temp;

那么它只在当前元素大于嵌套元素时进行交换,算法以这种方式交换它。对交换如何工作的一个简单解释是试着想象两个杯子,一个装满水,第二个装满咖啡,你想要交换它们。你会带一个空杯子(代表代码中的临时变量)。你把空杯子装满水,现在之前有水的杯子是空的,你把它装满咖啡。现在曾经有水的杯子装满了咖啡,而咖啡杯是空的,您将首先放入新杯子的水装满咖啡杯。我希望这能解释


推荐阅读