冒泡排序对数组进行遍历,两两比较当前面的大于后面的数则交换这两个数
-
void sortColors(vector
& 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& 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; } } }



