You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

算法基本操作判定:两处比较操作是否属于同一基本操作?

算法基本操作的判定:相邻元素比较的归类问题

先看你给出的算法实现:

doX (int[] l)
{
    int n;
    n = l.length;

    int first, second;
    int temp;

    for (first=0; first < n-1 && l[first] < l[first+1]; first++);

    if (first < n-1)
    {
        for (second = n-1; l[second-1] < l[second]; second--);

        temp = l[first];
        l[first] = l[second];
        l[second] = temp;
    }
}

针对你提出的疑问,结论是:这两处比较属于同一类基本操作,原因如下:

  • 从操作本质来看,两者都是对数组中相邻的两个整数执行小于关系的比较运算,逻辑含义和运算类型完全一致,没有本质区别。
  • 在算法分析的语境里,“基本操作”的定义核心是操作的类型,而非它出现的代码位置。只要是同一种运算(这里都是int类型的<比较),就归为同一基本操作。
  • 两处比较的差异仅在于比较的数组元素位置不同,但这属于操作的参数差异,而非操作本身的类型差异——就像两次调用同一个比较函数只是传入不同参数,不能算作不同的操作。

如果你的需求是统计不同循环中的比较次数,可以将两者分开计数,但这是对同一基本操作的分场景统计,而非把它们判定为不同的基本操作。

内容的提问来源于stack exchange,提问作者Michael B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:52:39