考研数据结构:冒泡排序时间复杂度,以及链表变序时间复杂度问题。

问题1:如图,书中的这个公式(n-2)(n-1)/2是通用的吗,还是只是第五题的。我做了一个冒泡排序发现次数对应不上。


#include <stdio.h>

int main()
{
    int num[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int count = 0;
    for (int i = 0; i <= 7; i++){
        for (int j = 0; j <= 7; j++){
            if (num[j] < num[j + 1]){
                int tem = num[j];
                num[j] = num[j + 1];
                num[j + 1] = tem;
                    count += 1;
            }
        }
    }
    for (int i = 0; i <= 8; i++)
        printf("%d_", num[i]);
    printf("\n%d\n", count);//36
    return 0;
}

img

img

img

问题2:做这个冒泡排序是因为下图。
假设两个长4和长5组成的表最坏的情况是123456789,就是上面那段代码,我的理解是这不就是冒泡吗?行次数m+n-1也对应不上
可能是链表的运算和顺序表的计算不一样吗?
以上叙述可能有些不对的地方,对于刚刚开始学习数据结构的我,大家请海涵

img