【问题标题】:What is wrong with my sorting function?我的排序功能有什么问题?
【发布时间】:2015-05-27 21:16:48
【问题描述】:

它似乎没有对所有数字进行排序。有些完全消失了。

void sort ()
{
    int i = 0, l = 0;

    while(i < myclass.d_arr_size)
    {
        if(myclass.d_arr[i] <= myclass.d_arr[l])
        {
            myclass.d_arr[i] = myclass.d_arr[l];
            i++;
        } else (l < myclass.d_arr_size) ? (l++) : (l=0, i++);
    }
}

怎么了?

【问题讨论】:

  • this => } else (l &lt; myclass.d_arr_size) ? (l++) : (l=0, i++); 可能是错误的来源,并不友好。让你的代码简单易读,调试起来也很简单
  • 在您的if 语句中,您将myclass.d_arr[i] 的值设置为myclass.d_arr[l],但是myclass.d_arr[i] 的原始值似乎没有发生任何变化。这可能是数字消除发生的地方。
  • 对不起,你不是覆盖数据吗?
  • 你忘记调试了。

标签: c function sorting


【解决方案1】:
myclass.d_arr[i] = myclass.d_arr[l];

您应该交换值而不是仅仅分配给i 索引。

这可能不是您代码中唯一的错误 :)

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    
    void main()
    
    {
    
        int x, y, a, l, number[30];
    
        printf("Enter the value of N \n");
        scanf("%d", &l);
        printf("Enter the numbers \n");
        for (x = 0; x < l; ++x)
            scanf("%d", &number[x]);
        for (x = 0; x < l; ++x)
        {
            for (y = x + 1; y < l; ++y)
            {
                if (number[x] > number[y])
                {
                    a =  number[x];
                    number[x] = number[y];
                    number[y] = a;
                }
            }
        }
        printf("The numbers arranged in ascending order are given below \n");
        for (x = 0; x< l; ++x)
            printf("%d\n", number[x]);
    }
    

    此代码将按升序对数字进行排序

    【讨论】:

      猜你喜欢
      • 2016-10-27
      • 1970-01-01
      • 2023-03-29
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2018-03-22
      相关资源
      最近更新 更多