我正在编写一个插入排序程序。
我想知道检查 for 循环中的“条件即 a[k]>temp
”多少时间以确定完成的比较次数。
如何找到它?
int i,j,k,moves=0,comparison=0;
for(j=1;j<arr_length;j++)
{
temp=a[j];
for(k=j-1;k>=0 && a[k]>temp;k--)
{
moves+=1;
a[k+1]=a[k];
a[k]=temp;
}
}
printf("No. of Moves%d",moves);
printf("Comparisons%d",comparison);
最佳答案
获取正确值的最简单方法是在逗号分隔列表中使用附加变量:
size_t count= 0;
for(k=j-1;k>=0 && ( count++ , a[k]>temp ) ; k--)
这将评估 count++
和 a[k]>temp
,但比较中使用的值将仅为 a[k]>temp
.
关于c - 如何计算在 FOR 循环中检查条件的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216861/