-1

我正在从事一个涉及使用多种标准算法的项目,例如快速排序、合并排序、二进制搜索。在使用之前实现所有这些将非常繁琐且耗时。

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

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

谢谢 !

4

1 回答 1

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 的事实实际上并没有告诉我们您的运行时库中有什么可用的。AC 实现由一个编译器和一个运行时库组成。gcc 只是编译器;根据操作系统,它可以与许多不同的运行时库一起使用。对于 Linux(或 GNU/Linux,如果您愿意)系统,运行时库通常(总是?)GNU libc(感谢 Jim Balter 的链接)。其他系统可能会使用其他一些运行时库;您必须找出系统使用的库并查找其文档。

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

于 2012-09-24T20:20:02.213 回答