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 指標來訪問資料。

更新於: 2019年7月30日

461 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.