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

时间:2013-12-23 22:22:39

标签: java sorting

在这个例子中,我的书向我展示了如何计算气泡排序算法中的步骤。代码中的每条评论都解释了添加到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​​得到”在哪里?也许我误解了他们计算步骤的方式,但这实际上是我提供的所有书籍。

1 个答案:

答案 0 :(得分:2)

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

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