我想编写一个位分离代码,但我想知道如何才能提高代码的速度。我可以摆脱一些循环等吗?
代码的目标是分离数组的1和0。 0应位于左侧,1应位于右侧。
这是我的代码:
#include <stdio.h>
int main() {
//code
int testCase;
scanf("%d\n", &testCase);
while(testCase>0) {
int n;
scanf("%d\n", &n);
int countzero = 0;
while(n>0) {
int i;
scanf("%d ", &i);
if(i==0){
countzero++;
}
}
for(int i=0; i<countzero; i++) {
printf("0");
}
for(int i=countzero; i<n ; i++) {
printf("1");
}
printf("\n");
}
return 0;
}
答案 0 :(得分:0)
我想知道如何提高代码的速度。我可以摆脱一些循环等吗?
每个测试用例的时间复杂度将为O(n),无论您做什么,因为在您知道何时停止打印零之前必须阅读所有数字。
现在,至于加速,你确实可以删除至少一个循环。提示:你不需要计算有多少个零,只需要计算多少个零。