c - GCC-4.3.2 中提供的标准算法

标签 c algorithm gcc

我正在开发一个项目,其中涉及使用多种标准算法,例如快速排序、合并排序、二分搜索。在使用之前实现所有这些将是非常乏味且耗时的。

那么,谁能给我 GCC-4.3.2 中已有的标准算法列表,以便我可以直接在我的项目中使用它们。

如果我的疑问不清楚,请发表评论。

谢谢!

最佳答案

目前尚不清楚您的问题的最佳答案是什么。这可能取决于您使用的操作系统。

C 标准库提供了许多实现各种算法和/或提供对操作系统功能的(有限)访问的函数。特别是,标准 qsort() 函数对数组进行排序,而 bsearch() 函数则对数组进行搜索。在这两种情况下,C 标准都指定了它们的作用;它没有说明他们是如何做到的。提供执行冒泡排序的 qsort() 和执行线性搜索的 bsearch() 的实现甚至是合法的——尽管我确信不存在实现实际上会做一些愚蠢的事情。

C 标准库的权威引用是 ISO C 标准。该标准已经有多个连续版本,分别于 1990 年、1999 年和 2011 年发布。1999 年标准的一个很好的草案是 N1256 ; C11 标准的一个很好的草案是 N1570 。如果您使用 gcc,您的实现可能实现几乎所有 C99(您可以使用 gcc -std=c99); C11 一致性工作正在进行中。

大多数实现都提供了 C 标准不需要的附加库函数。例如,POSIX指定了大量附加功能。

您使用 gcc 4.3.2 的事实实际上并没有告诉我们您的运行时库中有哪些可用的内容。 C 实现由编译器和运行时库组成。 gcc 只是编译器;根据操作系统的不同,它可以与许多不同的运行时库一起使用。对于 Linux(或 GNU/Linux,如果您愿意)系统,运行时库通常(总是?)GNU libc (感谢吉姆·巴尔特提供的链接)。其他系统可能使用其他一些运行时库;您必须找出您的系统使用的库并查找其文档。

请注意,C 库没有提供很多通用算法,部分原因是很难用纯 C 语言清晰地表达此类算法。例如,如果您查看 qsort()bsearch(),您会看到它们使用 void* 指针并处理内存块而不是类型对象。您可能会考虑看看 C++,它的标准库提供了更多的数据类型和算法;它们更加类型安全,因为它们使用 C++ 的模板功能。

关于c - GCC-4.3.2 中提供的标准算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12558961/

相关文章:

c - 在 C 中使用 GnuTLS 生成 RSA key 对

Python - 具有一些允许的内部点的凸包

c - 在 C 和 GCC 中使用带有返回参数的 pure/const 属性?

c - 为什么 int (*j)[2] = my_array 给出警告?

c - 有没有一种简单的方法可以从数组中删除项目?

c - 指针声明的区别?

python - 计算 Boyer-Moore 字符串搜索算法中的第二个(不匹配)表

algorithm - 如何确定一个点的旋转角度

c++ - 编译对象的布局

c - 如何查看 .bss 中静态变量的内存位置?