C вставка сортировки застрял в то время как цикл - PullRequest
0 голосов
/ 21 января 2019

Я пишу простую программу для сортировки небольшого массива, но когда я запускаю свой код для сортировки вставками, программа просто запускается навсегда.

Возможно, это проблема цикла while. Я просмотрел программу на бумаге и просмотрел код других людей, но не могу понять, почему он не работает.

void mySort(int d[], unsigned int n){   
        int i, j, k;
        for (j = 1;j < n;i++){
        k = d[j];
        i = j-1;

        while (d[i] > k && i >=0){
            d[i+1] = d[i];
            d[i] = k;
            i = i - 1;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Ошибка в вашем цикле for.

for (j = 1;j < n;i++){

Итак, ваши условия завершения цикла for таковы, что j> = n, за исключением того, что вы никогда не измените j или n после этого оператора.

Попробуйте

for (j = 1;j < n;j++){
0 голосов
/ 21 января 2019
for (j = 1;j < n;i++){

Вы сравниваете значение j, но вы увеличиваете значение i.

Если вы используете отладчик , вы сразу заметите, что значение j не обновляется, и вы сразу же обнаружите свою проблему !!

Всегда Использование отладчика

...