前言
感觉就是手动实现sort函数
好记性不如烂笔头
一、题目
二、方法
1.单指针方法
思路很简单,就是分别把0和1放在正确的位置上,通过遍历和交换实现。
C语言代码如下:
void sortColors(int* nums, int numsSize){
//tmp用来暂存交换的数字
int tmp = 0;
//定义count来记录下标位置的变化(count在第一个for循环中记录上一个0在哪个位置,在第二个for循环中记录上一个1在哪个位置)
int count = 0;
//首先将0放在正确位置上
for(int i=0; i<numsSize; i++){
if(nums[i] == 0){
tmp = nums[count];
nums[count] = nums[i];
nums[i] = tmp;
count++;
}
}
//然后将1放在正确位置上
for(int j=count; j<numsSize; j++){
if(nums[j] == 1){
tmp = nums[count];
nums[count] = nums[j];
nums[j] = tmp;
count++;
}
}
}
举个栗子:
下面都是进阶的方法(只需要一次扫描)