C qsort()与C ++ sort()

在这里,我们将看到qsort()C和sort()C ++之间的区别是什么。

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和插入排序。
C标准没有讨论此排序算法的复杂性。在这种情况下,在C ++ 11中,最坏的情况下复杂度为O(n logn)sort()。某些以前的版本sort()在最坏的情况下采用O(n2),而在一般情况下,它们采用O(nlogn)。
这种运行时间大于sort()运行时间少于qsort()
qsort()对于不同类型的数据不灵活。sort()是灵活的。这可以对C数组,C ++向量,C ++双端队列和其他一些容器进行排序。
这种类型不是更安全的类型。它使用不安全的void指针访问数据。这种分类技术更安全。它不需要任何不安全的void指针即可访问数据。