C 的 qsort() 與 C++ 的 sort()
在這裡,我們將瞭解 C 中的 qsort() 和 C++ 中的 sort() 之間的區別。
C 提供了 qsort() 函式,可用於對陣列進行排序。該函式的引數和語法如下所示。
void qsort(void *base, size_t num, size_t size, int (*comparator) (const void*, const void*));
此函式獲取陣列的基地址、陣列的元素數量、陣列中每個專案的尺寸以及一個比較器函式。
C++ 提供了 sort() 函式。它位於 C++ STL 中。引數和語法如下所示。
void sort(T first, T last, Compare c);
這裡不保證重複元素的順序會被保留。為此,我們可以使用 C++ STL 提供的 stable_sort。
qsort() 和 sort() 之間的區別
| C 中的 qsort() | C++ 中的 sort() |
|---|---|
| 它使用快速排序演算法。 | 它使用 introsort。這是一種混合排序演算法。不同的實現使用不同的演算法。GNU C++ STL 使用三部分混合排序。Introsort、快速排序和插入排序。 |
| C 標準沒有討論此排序演算法的複雜度。 | 在這種情況下,C++11 sort() 在最壞情況下複雜度為 O(n logn)。某些早期版本的 sort() 在最壞情況下為 O(n2),在平均情況下為 O(nlogn)。 |
| 此排序的執行時間比 sort() 長。 | 執行時間比 qsort() 短。 |
| qsort() 對於不同型別的資料不靈活。 | sort() 比較靈活。它可以對 C 陣列、C++ 向量、C++ 雙端佇列以及其他一些容器進行排序。 |
| 此排序不太型別安全。它使用不安全的 void 指標來訪問資料。 | 此排序技術更安全。它不需要任何不安全的 void 指標來訪問資料。 |
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP