首頁 >後端開發 >C++ >C qsort()與C++ sort()的區別

C qsort()與C++ sort()的區別

WBOY
WBOY轉載
2023-09-20 21:25:021300瀏覽

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、Quicksort和Insertion Sort。
C標準沒有提到 這個問題。
這個排序演算法的複雜性。 在這種情況下,C 11的sort()函數的複雜度是O(n logn)。先前的某些版本的sort()函數在最壞情況下的複雜度是O(n2),而在平均情況下,它們的複雜度是O(nlogn)。 這個排序的運行時間比 sort() 運行時間小於qsort()。 qsort()對不同型別不夠靈活。 sort() 運行時間小於qsort()。 qsort()對不同型別不夠靈活 sort() is flexible. It can sort C arrays, C vectors, C deques, and some other containers. This sorting method is not type-safe. It uses unsafe void pointers to access data. This sorting technique is safer. It does not require the use of any unsafe void pointers to access data.

以上是C qsort()與C++ sort()的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除