/*
问题描述:
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排 列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
*/
let numList = [2, 0, 2, 1, 1, 0,1,2,0,2,2,0,1,2,1,1,0,1];
let colorSort = function(nums){
if(!nums || nums.length<=0){
return [];
}
let slow = 0;let fast = 1;
let sortCont = 1;
while(sortCont<=2){
while(fast<nums.length){
if(nums[fast] === nums[slow] && fast != slow + 1){
let temp = nums[slow + 1];
nums[slow + 1] = nums[fast];
nums[fast] = temp;
slow++;
}
fast++;
}
slow++;
fast = slow + 1;
sortCont++;
}
return nums;
}
console.log(colorSort(numList))