3758 . 单选题 Puls

以下程序的算法的时间复杂度为?

//交换数组arr的第i个元素和第j个元素
void swap(vector < int > & arr, int i, int j) {
    int tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
}
int bubble_sort(vector < int > & arr) {
    for (int i = arr.size() - 1; i > 0; i--) {
        bool flag = false; // 标志位
        for (int j = 0; j < i; j++) {

            if (arr[j] > arr[j + 1]) {
                swap(arr, i, j);
                flag = true;
            }
        }
        if (!flag)
            break; // 此轮“冒泡”未交换任何元素
    }
}