C 如何加速我的代码?

C 如何加速我的代码?,c,performance,loops,time-complexity,C,Performance,Loops,Time Complexity,我想写一个位分段代码,但我想知道我能做些什么来提高代码的速度。我能去掉一些环吗 代码的目的是分离数组的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

我想写一个位分段代码,但我想知道我能做些什么来提高代码的速度。我能去掉一些环吗

代码的目的是分离数组的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;
}
#包括
int main(){
//代码
int测试用例;
scanf(“%d\n”、&testCase);
while(testCase>0){
int n;
scanf(“%d\n”,&n);
int countzero=0;
而(n>0){
int i;
scanf(“%d”、&i);
如果(i==0){
countzero++;
}
}
对于(int i=0;i
我想知道我能做些什么来提高代码的速度。我能去掉一些循环吗

无论您做什么,每个测试用例的时间复杂度都将是O(n),因为您必须先读取所有数字,然后才能知道何时停止打印零


现在,关于加速,你确实可以删除至少一个循环。提示:你不需要计算有多少个零,只需要计算有多少个。你试过运行这个代码吗?一旦它进入任何while循环,它就无法再离开了……我忘了递减测试用例。你是对的不要忘记
n
,你永远不会改变在内部
while
循环中使用它。修复这两件事肯定会使代码运行得更快;)这个“运行代码段”东西专用于HTML/JavaScript。它对C代码没有用处。(因此,我将其删除。)看。现在,您已经很好地突出了示例代码的语法。嗯,这看起来更好。