AC Log - 插入排序
type: channel
link: https://aclog.neix.in/index.php/tag/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F/
items: 颜色分类

颜色分类
type: item
date: 2025-12-20T07:06:41+00:00
description: 题目链接：颜色分类给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ，原地 对它们进行排序，使得相同颜色的元素相邻，并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。方法一：插入排序class Solution { public: void sortColors(vector<int>& nums) { int p0 = 0,p1 = 0; for (int i = 0;i < nums.size();i++) { int x = nums[i]; nums[i] = 2; if (x <= 1) { nums[p1++] = 1; } if (x == 0) { nums[p0++] = 0; } } } };