2012-09-24 19 views
-1

我正在開發一個涉及使用幾種標準算法的項目,如快速排序,合併排序,二進制搜索。在使用之前實施它們將非常繁瑣和耗時。所以,任何人都可以給我GCC-4.3.2中已有的標準算法列表,以便我可以直接在我的項目中使用它們。GCC-4.3.2中的標準算法

如果我不清楚詢問我的疑問,請發表評論。

謝謝!

+0

我也在找:) –

+3

那麼在C標準庫(http://en.cppreference.com/w/c/algorithm)中有兩種算法。 Glibc(http://www.gnu.org/software/libc/manual/html_node/index.html)應該包含任何你可能想要的。 – Lalaland

+0

是的,你不清楚,特別是你使用「算法」這個詞。 GCC下的標準C庫提供的*函數*有詳細記錄。你在找那個清單嗎? –

回答

2

目前還不清楚問題的最佳答案是什麼。這可能取決於您使用的操作系統。

C標準庫提供了許多實現各種算法和/或提供(有限)訪問操作系統功能的函數。具體而言,標準的qsort()函數對數組進行排序,並且bsearch()函數在數組上進行搜索。在這兩種情況下,C標準都規定了他們所做的事情;它沒有提到他們是如何做到的。對於執行提供執行Bubble Sort的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(感謝Jim Balter的鏈接)。其他系統可能使用其他運行時庫;你將不得不找出你的系統使用的庫,並查找它的文檔。

請注意,C庫不提供很多通用算法,部分原因是很難在純C中清晰地表達這樣的算法。例如,如果您查看qsort()bsearch(),您會看到他們使用void*指針並處理內存塊而不是類型化對象。您可能會考慮查看C++,它的標準庫提供了大量的數據類型和算法;他們更安全,因爲他們使用C++的模板功能。