c - C 语言的基本插入排序算法(TDM-GCC 编译器)

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

正在学习基本的排序技术,被我自己实现的基本插入排序算法困住了。该代码手工运行良好,但在使用 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;

有人可以帮忙吗?

最佳答案

有两个问题:

int n = sizeof(B);

B 的大小实际上是元素数量乘以数据类型的大小,因此它太大了。你应该改用这个:

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

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

i >= n-1 

这始终为 false,因此永远不会进入循环。应该是:

i <= n-1

关于c - C 语言的基本插入排序算法(TDM-GCC 编译器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816139/

相关文章:

c++ - 如何使用 dlib C++ 库编写基于套接字的应用程序?

c - "buffer[gotten] = '\0';"在此代码中的作用是什么?

c++ - 我可以在处理它时保留编译器输出的格式吗?

c - Head First C : Erratum? 指针语法

c - 如何在纯 C 中包装函数指针

c# - 如何在 C# 中排列或排序桌面图标?

algorithm - 在高效的数据结构中存储一桶数字

java - 如何改进已经是 O(n) 的递归排序算法?

c - 如何修复由 -Wconversion 引起的错误?

c - 了解程序中变量的多重声明和 GCC 编译器行为