#3801. 练4-红白蓝的排序魔法

练4-红白蓝的排序魔法

🏫 兔猫信奥学院 - 红白蓝的排序魔法

在兔猫信奥学院的魔法算法课上,加菲老师今天带来了一面特殊的“红白蓝旗帜”。他微笑着看向教室里的小兔小猫,缓缓说道:


🐾 加菲老师:

“同学们,今天我们不只是学算法,我们要动用你们的排序魔法来整理一面被打乱的旗帜!”

“这面旗帜由红色(0)白色(1)蓝色(2)三种颜色组成。现在这些颜色被打乱地混在了一起,你们需要用只进行一次扫描原地排序的方式,把旗帜整理成从红到白再到蓝的顺序!”

“你们只能用常数空间,也就是不能用什么辅助数组哦~”


🐇 小兔睁大眼睛:“我们要一口气搞定排序,而且不能额外开新空间?!”

🐱 小猫认真地点头:“一定是加菲老师又想考我们对指针和逻辑的掌握!”


于是,他们面对了一组由颜色数字组成的神秘数组 nums,任务是将它们原地变成“红白蓝”的完美顺序……


🎯 输入格式

第一行输入一个正整数 n,表示颜色元素的数量。
第二行输入 n 个数,分别是 0(红色)、1(白色)或 2(蓝色),颜色之间用空格分隔。


📝 输出格式

输出排好序的颜色数组,一行输出,数字之间用空格隔开,顺序为:红色(0)、白色(1)、蓝色(2)。


🎲 输入样例

样例1:

6
2 0 2 1 1 0

输出1:

0 0 1 1 2 2

样例2:

3
2 0 1

输出2:

0 1 2

📏 数据范围

  • \(1 \leq n \leq 500\)
  • 所有数组元素只会是 0、1 或 2。

🧠 加菲老师偷偷地提示:

“小兔、小猫,其实这就是著名的荷兰国旗问题。你们可以试试用三个指针来分别表示红色区、白色区和蓝色区,让颜色自动‘归队’。”


🎉 故事结尾,小兔和小猫在一次遍历中,就把乱七八糟的颜色整理得整整齐齐!加菲老师满意地点点头,宣布他们通过了排序魔法考验

现在,轮到你来整理这面红白蓝的旗帜了,你准备好了吗?🐇🐱✨