在这里,我们将看到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指针即可访问数据。 |