纯正从时间复杂度来看,这两种写法为什么一个超时

单纯从时间复杂度来看,这两种写法为什么一个超时,
在OJ在做一道题,大体思想都解决了,可就是超时,后来看了别人的代码,发现里面有一段造成了超时,对算法时间复杂度还不是很了解,求各位看下,下面两种写法,单纯从时间复杂度来看为什么相差那么大,


case1:
     for(int i=l;i<=r;++i){
            if(fabs(points[i].x-points[mid].x)<=dis){
                if(points[i].x<=points[mid].x){
                  pointx[m]=points[i];
                pointx[m].index='l';
                ++m;
                }else{
                pointx[m]=points[i];
                pointx[m].index='r';
                ++m;
                }
            }
        }

csse2:
	for ( i = l; i <= mid; i++)
{
double leftCoord = points[mid].x - dis;
if (points[i].x >= leftCoord)
{
pointx[m].index = 'l';  /*标识属于左边部分*/
pointx[m].x = points[i].x;
pointx[m].y = points[i].y;
m++;
}
}
for (  ; i <= r; i++)
{
double rightCoord = points[mid].x + dis;
if (points[i].x <= rightCoord)
{
pointx[m].index = 'r';  /*标识属于右边部分*/
pointx[m].x = points[i].x;
pointx[m].y = points[i].y;
m++;
}
}

两个情况的r 大小是一样的
------解决方案--------------------
fabs函数调用产生的开销导致的?
------解决方案--------------------

因为case1比case2多了一句 if(fabs(points[i].x-points[mid].x)<=dis){

明显2比1时间复杂度低。