在这个例子中,我的书向我展示了如何计算气泡排序算法中的步骤。代码中的每条评论都解释了添加到steps
的金额的原因。
代码:
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);
}
}
}
}
在查看steps += 4;
时,我理解他们为什么添加4
:因为有2个get语句和2个set语句。但是在这一步steps += 3;//count one compare and 2 gets
中我不明白它为什么要添加3.在if
语句之前的代码中有哪些比较语句?那么if
陈述之前的“2得到”在哪里?也许我误解了他们计算步骤的方式,但这实际上是我提供的所有书籍。
答案 0 :(得分:2)
if语句本身内部有两个gets和一个compare:
if (list.get(inner).compareTo(list.get(inner + 1)) > 0)