На самом деле не понимаю, почему мой массив сортирует не по возрастанию, а по убыванию - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок ie. На самом деле не понимаю, почему это в порядке убывания, а не в порядке возрастания, поскольку я проверяю каждый элемент массива со всеми другими элементами, и если первый больше, он становится последним и т. Д., Поэтому элемент должен go медленно направо в порядке, но происходит наоборот.

#include <stdio.h>

void main(void){
    unsigned int array[7] = {3,1,6,9,0,44,4};

    for (unsigned int i=0; i<=6; ++i){
        for (unsigned int j=0; j<=6; ++j){
            if (array[i] > array[j]){
                int hold = array[j];
                array[j] = array[i];
                array[i] = hold;
            }
        }
    }
    for (unsigned int i=0; i<=6; ++i){
        printf("%4d", array[i]);
    }
}

Вывод:

  44   9   6   4   3   1

Я знаю, что замена ">" на "<" у меня есть в порядке возрастания, но я не понимаю, почему. </p>

Редактировать: следуя полученным ответам, если я заменяю (во внутреннем l oop), что 0 на «i + 1», это работает. Я постараюсь лучше понять, почему.

1 Ответ

0 голосов
/ 04 апреля 2020

Вы попытались реализовать сортировку Selection . Код в основном правильный, но есть логический недостаток в том, как вы структурировали свои циклы, и, в частности, в диапазоне, охватываемом вашим внутренним l oop. Запустите ваш код в отладчике, чтобы увидеть, что происходит, или попробуйте подробно объяснить вашей резиновой утке / собаке / компьютерной мыши, что делает код и почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...