对于数组数字排序采用的冒泡算法里面的结构(双循环for语句的内循环镶嵌一个if语句)怎么更深入理解?

     for(int i=0;i<numslength;i++)
     {
        for(int j=0;j<numslength-i-1;j++)  
        {
             if(nums[i]>nums[i+1])
             {
                 temp=nums[i];
                 nums[i]=nums[i+1];     
                 nums[i+1]=temp;
            }
        }
     }

/*
怎么更深入吗,我好像不太理解你所问的是什么意思
#if判断语句在此是进行判断两数的大小继而达到从大到小还是从小到大排好序
#加个判断语句减少时间复杂度,一轮下来都没有交换位置说明已经排好了,无需进行没必要的判断了
*/
void srot(int arr[], int n)
{
    int i, j;
    bool flag;
    for (i = 0; i < n - 1; i++)
    {
        flag = false;
        for (j = 0; j < n - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                flag = true;
            }
        }
        //如果一轮下来都没有交换位置说明已经排好了
        if (flag == false)
            return;
    }
}