把一个0-1串(只包含0和1的串)进行排序,你可以交换任意两个位置,问最少交换的次数?
分析: 快排partition?最左边的那些0和最右边的那些1都可以不管
l00…0001…….0111….1
void funtion(char a[]){
int answer = 0;
for (int i = 0, j = len – 1; i < j; ++i, --j) {
for (;(i < j) && (a[i] == ‘0’);++i);//从左到右找1
for (;(j > i) && (a[j] == ‘1’); --j);//从右到左找0
if (i < j){
++answer;
//交换
char temp = a[i];
a[i] = a[j];
a[j] = temp;
}else{//跳出循环
Break;
}
}
}