【问题标题】:C insertion sort stuck in while loopC插入排序卡在while循环中
【发布时间】:2019-06-15 02:26:58
【问题描述】:

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

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

【问题讨论】:

  • 你试过调试器吗?顺便说一下,看起来不像是插入排序...
  • 您的 for 循环对于 (j = 1;j 似乎很奇怪

标签: c loops sorting while-loop insertion


【解决方案1】:
for (j = 1;j < n;i++){

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

如果您使用调试器,您会立即注意到j 的值没有更新,您会立即发现问题!! p>

始终使用调试器

【讨论】:

    【解决方案2】:

    错误在你的 for 循环中。

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

    所以你的 for 循环的终止条件是 j >= n,除非你在这个语句之后永远不会改变 j 或 n。

    试试

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多