【问题标题】:Basic Insertion Sort Algorithm on C (TDM-GCC compiler)C 上的基本插入排序算法(TDM-GCC 编译器)
【发布时间】:2015-10-27 06:18:37
【问题描述】:

正在学习基本的排序技术,被我自己实现的基本插入排序算法卡住了。代码手动运行良好,但使用 TDM-GCC 编译器在 Dev C++ 上显示不正确的输出:

int B[6] = {7, 44, 6, 12, 90, 111234};
int n = sizeof(B);
int i = 0;
int val = 0;
int hole = 0;

for (i = 1; i >= n-1; i++)
{
    val = B[i];
    hole = i;

    while(hole>0 && B[hole-1]>val)
    {
        B[hole] = B[hole-1];
        hole = hole - 1;
    }
    B[hole] = val;
}

printf("The Sorted Values are:\n");

for(i=0;i<n;i++)
    printf("%d ", B[i]);

return 0;

有人可以帮忙吗?

【问题讨论】:

  • 向我们展示您的错误输出。
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example

标签: c sorting gcc dev-c++ insertion-sort


【解决方案1】:

有两个问题:

int n = sizeof(B);

B的大小实际上是元素个数乘以数据类型大小,所以太大了。你应该有这个:

int n = sizeof(B) / sizeof(B[0]);

另外,您的for 循环条件不正确。你有:

i >= n-1 

这总是假的,所以永远不会进入循环。应该是:

i <= n-1

【讨论】:

  • 没问题。如果您觉得对您有用,请随时 accept this answer
  • @user5123971 这个答案有用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多