Java 无法理解我的书是如何计算算法步骤的

Java 无法理解我的书是如何计算算法步骤的,java,sorting,Java,Sorting,在这个例子中,我的书向我展示了如何计算气泡排序算法中的步骤。代码中的每个注释都解释了添加到步骤中的金额被添加的原因 代码: public void bubbleSort(ArrayList <Comparable> list){ steps = 0; for (int outer = 0; outer < list.size() - 1; outer++){ for (int inner = 0; inner < list.size()-outer-

在这个例子中,我的书向我展示了如何计算气泡排序算法中的步骤。代码中的每个注释都解释了添加到
步骤中的金额被添加的原因

代码:

public void bubbleSort(ArrayList <Comparable> list){
   steps = 0;
   for (int outer = 0; outer < list.size() - 1; outer++){
     for (int inner = 0; inner < list.size()-outer-1; inner++){
         steps += 3;//count one compare and 2 gets
         if (list.get(inner).compareTo(list.get(inner + 1)) > 0){
            steps += 4;//count 2 gets and 2 sets
            Comparable temp = list.get(inner);
            list.set(inner,list.get(inner + 1));
            list.set(inner + 1,temp);
         }
     }
   }
 }
public void bubbleSort(数组列表){
步长=0;
对于(int-outer=0;outer0){
步骤+=4;//计数2个获取和2个集合
可比温度=列表获取(内部);
list.set(内部,list.get(内部+1));
列表设置(内部+1,温度);
}
}
}
}

查看
步骤时+=4我理解他们为什么要添加
4
:因为有两个get语句和两个set语句。然而在这一步中
步骤+=3//计算一次比较,得到2次
我不明白为什么要加3次。在
if
语句之前的代码中,哪里有比较语句?此外,
if
语句前面的“2 get”在哪里?也许我误解了他们计算步骤的方式,但这实际上是我提供的全部书籍

if语句本身内部有两个get和一个compare:

if (list.get(inner).compareTo(list.get(inner + 1)) > 0)

也许list.size()x2是您的2个get,比较是内部的list.size()
也会被计算在内。