c - 如何计算在 FOR 循环中检查条件的次数

标签 c sorting for-loop

我正在编写一个插入排序程序。

我想知道检查 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/

相关文章:

java - 在java中的cmd中打印一个表

c - 意外标记附近出现语法错误 '('

c - return语句是否被认为是C中的表达式语句?

java - Java 中的 Oracle 等效排序

sorting - 代码优化技巧 :

c - 如何在不使用 for 循环的情况下填充二维数组?

python - 如何在 Python 中向量化这个 for 循环?

c - 打印列数和行数为奇数的数组的值

c - C 中使用 strtol 逐行读取文本文件

Python 按第一个和第二个元素对元组进行排序