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()
也会被计算在内。