我正在编写一个简单的程序来对一个小的数组进行排序,但是当我运行我的代码进行插入排序时,该程序将永远运行。
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;
}
}
}
答案 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++){