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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告