Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C插入排序卡在while循环中_C_Loops_Sorting_While Loop_Insertion - Fatal编程技术网

C插入排序卡在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]

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

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