C插入排序卡在while循环中
我正在编写一个简单的程序来对一个小数组进行排序,但当我运行插入排序代码时,该程序将永远运行 这可能是while循环的问题。我在纸上运行了这个程序,查看了一些其他人的代码,但我不明白为什么它不起作用C插入排序卡在while循环中,c,loops,sorting,while-loop,insertion,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]
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;
}
}
}
void mySort(int d[],unsigned int n){
int i,j,k;
对于(j=1;jk&&i>=0){
d[i+1]=d[i];
d[i]=k;
i=i-1;
}
}
}
用于(j=1;j
比较值j
,但增加值i
如果使用调试器,您会立即注意到值j
没有更新,您会立即发现问题
始终使用调试器错误在for循环中
for (j = 1;j < n;i++){
(j=1;j{
所以for循环的终止条件是j>=n,除非在这条语句之后永远不会更改j或n
试一试
(j=1;j{
您尝试过调试器吗?顺便说一句,它看起来不像插入排序……您的for循环对于(j=1;jfor (j = 1;j < n;i++){
for (j = 1;j < n;j++){