首页 > 解决方案 > C插入排序卡在while循环中

问题描述

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

这可能是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;
        }
    }
}

标签: cloopssortingwhile-loopinsertion

解决方案


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

你比较价值j,但你增加价值i

如果您使用 Debugger,您会立即注意到该值j没有更新,并且您会立即发现问题!

始终使用调试器


推荐阅读