void bubbleSort(vector<int>& nums) { int n = nums.size(); bool flag = false; for (int i = 0; i < n - 1; ++i) { flag = false; for (int j = 0; j < n - 1 - i; ++j) { if (nums[j] > nums[j + 1]) { //某一趟排序中,只要发生一次元素交换,flag就从false变为了true //也即表示这一趟排序还不能确定所剩待排序列是否已经有序,应继续下一趟循环 swap(nums[j], nums[j + 1]); flag = true; } } //但若某一趟中一次元素交换都没有,即依然为flag = false //那么表明所剩待排序列已经有序 //不必再进行趟数比较,外层循环应该结束,即此时if (!flag) break; 跳出循环 if (!flag) break; }