C插入排序卡在while循环中

时间:2019-01-21 16:44:23

标签: c loops sorting while-loop insertion

我正在编写一个简单的程序来对一个小的数组进行排序,但是当我运行我的代码进行插入排序时,该程序将永远运行。

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 :(得分:0)

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

您比较值j,但增加值i

如果 使用调试器 ,您会立即注意到值j不会被更新,您会立即发现问题!!

始终 使用调试器

答案 1 :(得分:0)

该错误在您的for循环中。

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

因此,for循环的终止条件是j> = n,除非您在此语句之后从不更改j或n。

尝试

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