2017-02-04 10 views
-1

Это мой первый вопрос о переполнении стека. Я только начал свое путешествие в мир программирования через CS50. Мой код для сортировки вставки на C немного отличается от того, что предложил псевдокод инструктора. Я просто хочу знать, правилен ли следующий код и как я могу сделать его лучше? Большое спасибо.Является ли моя реализация вставки Сортировка правильной?

int arr[6] = {23, 42, 4, 16, 8, 15}; 

for (int i = 1; i < 6; i++)   // Iterating over the unsorted portion of array. 
{ 
    int element = arr[i];   // This is the first element of the unsorted portion. 
    int temp = -1; 
    for(int j = i-1; j >= 0 && element < arr[j]; j--) // Iterating over the unsorted portion of array from right to left. 
    { 
     arr[j+1] = arr[j]; 
     temp = j; 
    } 

    if(temp != -1)     // If temp does not change, the element is already sorted. 
    { 
     arr[temp] = element; 
    } 
} 
+0

@JonathanLeffler lol Спасибо за ответ в любом случае! – PseudoAficionado

ответ

2

Congrats, ваш код действительно работает.

Первый способ увидеть, что этот код используется в функции, например main(), и печатать каждый элемент в порядке после запуска алгоритма. Если результат НЕ является тем, что вы ожидали, то он, конечно, не работает, однако, наоборот, это неверно. Но если вы пройдете первую попытку, вы должны начать тестировать свой код против других случаев, особенно в случае с углами.

Еще один полезный вариант здесь - использование GDB, отладчика, который может отображать весь массив на каждом шаге вашего кода, особенно тот, который реализован на CS50 IDE, что на самом деле очень приятно смотреть.

Кроме того, HackerRank's challenges на insertion sort может помочь вам узнать об этом. Помимо этого, удачи в вашем курсе, надеюсь, вам понравится!

+0

Спасибо, друг! обязательно проверит это. И да, этот отладчик сладок! – PseudoAficionado

Смежные вопросы