繁体   English   中英

正确计算插入排序比较的次数

[英]properly count the number of insertion sort comparisons

int comparisons = 0;
for (int i = 1; i < input.length; i++) {
  int j = i;
  while (j > 0 && comp.compare(input[j - 1], input[j]) > 0) {
    if (comp.compare(input[j - 1], input[j]) > 0)
      comparisons++;
    E temp = input[j - 1];
    input[j - 1] = input[j];
    input[j] = temp;
    j--;
  }
  comparisons++;
}

我正在尝试计算插入排序中的比较次数。 但是,我的比较与预期的 JUnit 值不正确。

输入: { 9, 5, 6, 7, 2, 8 } 期望: 11 但为 13

输入:{ "how", "about", "dey", "da", "bears" }; 期望:7 但是 8

测试输入的预期值不正确还是我遗漏了一些边缘情况?

即使条件为假并且命令: comparisons++也会comparisons++

只有在它为真时才会发生;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM