我正在开发一个项目,其中涉及使用多种标准算法,例如快速排序、合并排序、二分搜索。在使用之前实现所有这些将是非常乏味且耗时的。
那么,谁能给我 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/