給定一個包含紅色、白色和藍色,一共n個元素的數組,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。javascript
此題中,咱們使用整數 0、1 和 2 分別表示紅色、白色和藍色。java
輸入: [2,0,2,1,1,0]
輸出: [0,0,1,1,2,2]
複製代碼
/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. * 冒泡排序 */
var sortColors = function(nums) {
let len=nums.length;
if(len<2){
return nums;
}
for(let i=0;i<len;i++){
let flag=false;
for(let j=0;j<len-i;j++){
if(nums[j]>nums[j+1]){
let temp=nums[j];
nums[j]=nums[j+1]
nums[j+1]=temp;
flag=true;
}
}
if(!flag){
return nums
}
}
return nums
};
複製代碼
/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */
var sortColors = function(nums) {
let len=nums.length;
if(len<2){
return nums;
}
let p0=0;
/*當前元素*/
let curr=0;
let p2=len-1;
let temp;
while(curr<=p2){
if(nums[curr]===0){
temp=nums[p0];
nums[p0++]=nums[curr];
nums[curr++]=temp
}else if(nums[curr]===2){
temp=nums[curr];
nums[curr]=nums[p2]
nums[p2--]=temp
}else{
curr++
}
}
return nums
};
複製代碼