正确计算插入排序比较的次数
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
正在输入:
{“如何”,“关于”,“dey”,“da”,“熊”};期望:7 但实际是 8
测试输入的预期值是否不正确,或者我是否遗漏了一些极端情况?
即使条件为假且命令为: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
正在输入: {“如何”,“关于”,“dey”,“da”,“熊”};期望:7 但实际是 8
测试输入的预期值是否不正确,或者我是否遗漏了一些极端情况?
即使条件为假且命令为:comparisons++
只有当它为真时才会发生 ;)