Kohila G Ответов: 1

Плохое предложение практики кода.


Итак, вчера мой учитель задал нам вопрос, чтобы попробовать. Ссылка на этот вопрос такова
Переставьте массив таким образом, чтобы arr[i] = i - GeeksforGeeks[^]
Он просто рассказал о проблеме и входных данных и сказал нам попробовать. Я придумал решение и показал ему его.
Но он сказал, что мой код плохой и не оптимизирован. Через некоторое время он показал код (первый), который дан на сайте в проекторе, и сказал, что это правильное решение.
В принципе, мой код и код на веб-сайте работают.
Но мне нужно знать, почему он сказал, что мой код не оптимизирован и плох. Как я могу улучшить себя, чтобы написать хороший код?

Что я уже пробовал:

#include<stdio.h>
int main()
{
        int a[] = {-1, -1, 6, 1, 9, 3, 2, -1, 4, -1},n,i,x,y;
        n= sizeof(a)/sizeof(a[0]);
        for(i=0;i<n;i++){
                if(a[i] == i || a[i] == -1)
                        continue;
                else if(a[i] != -1){
                                x=a[i];
                                y=a[x];
                                a[i] = y;
                                a[x] = x;
                }
        }
        for(i=0;i<n;i++)
                printf("%d ",a[i]);
}

~                                                                                                                                                                    
~                                                                                                                                                                    
~                                                                                                                                                                    
~                      

Richard Deeming

Почему бы тебе не попросить учителя объяснить тебе это? За это ему и платят! :)

Kohila G

Очень сильная социальная тревога.

1 Ответов

Рейтинг:
10

KarstenK

Я вижу три причины

1.вы проверяете наличие

a[i] == -1
так что в остальном вам не нужно проверять его.

2. у вас есть 2 n-петли

3. вам нужно на одно задание меньше.
x=a[i];
a[i]=a[x];//direct without buffering
a[x] = x;