冒泡排序对数组进行遍历,两两比较当前面的大于后面的数则交换这两个数
-
void sortColors(vector<int>& nums) { int n = nums.size(); for (int i = 1;i < n;i++) { for (int j = 1;j <= n - i;j++) { if (nums[j] < nums[j - 1]) { swap(nums[j-1], nums[j]); } } } }
优化:数组有可能没有遍历到末端就顺序正确;我们可以做一个标记,记录交换次数,当交换次数位0时,证明数组排列成功跳出循坏。
void sortColors(vector<int>& nums) {
int n = nums.size();
for (int i = 1;i < n;i++) {
int count = 0;
for (int j = 1;j <= n - i;j++) {
if (nums[j] < nums[j - 1]) {
swap(nums[j-1], nums[j]);
count++;
}
}
if (count == 0) {
break;
}
}
}