📜  算法|排序|问题10

📅  最后修改于: 2021-06-29 11:08:31             🧑  作者: Mango

气泡排序的最佳时间复杂度是多少?

(A) N ^ 2
(B) NlogN
(C) N
(D) N(logN)^ 2答案: (C)
说明:如果对输入数据进行排序,那么冒泡排序将处于最佳状态。即,如果输入数据以与预期输出相同的顺序排序。这可以通过使用一个布尔变量来实现。布尔变量用于检查值是否在内循环中至少交换了一次。
考虑以下代码片段:

int main()
{   
    int arr[] = {10, 20, 30, 40, 50}, i, j, isSwapped;
    int n = sizeof(arr) / sizeof(*arr);
    isSwapped = 1;
    for(i = 0; i < n - 1 && isSwapped; ++i)
    {
        isSwapped = 0;
        for(j = 0; j < n - i - 1; ++j)
            if (arr[j] > arr[j + 1])
            {
                swap(&arr[j], &arr[j + 1]);
                isSwapped = 1;
            }
    }
    for(i = 0; i < n; ++i)
        printf("%d ", arr[i]);
    return 0;
}

请注意,在上面的代码中,外部循环仅运行一次。
这个问题的测验